Applet : redimensionnement d'une image avant upload

Description

Afin de ne pas surcharger le serveur et de diminuer le temps d'upload, voici un applet qui redimensionne les images en local avant des les envoyer au serveur avec une commande POST.
Fonctionne avec les images >7Mo !
Utilisation de la bibliothèque Jakarta/Appache HttpClient
3 fichiers jar sont à télécharger sur le site officiel. (également dans le zip sous des noms simplifiés et sans la doc !)
commons-httpclient-3.1
commons-codec-1.3.
commons-logging-1.1.1

Source / Exemple :


Je mets ici que le PHP et l'HTML de démarrage. L'applet se trouve dans le zip sous forme d'un projet NetBeans.
Voici l'HTML qui permet de démarrer l'applet : 
<HTML>
<HEAD>
   <TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>

<H3><HR WIDTH="100%">Image Resizer<HR WIDTH="100%"></H3>

<P>
<APPLET code="ImageResizer/ImageResizerHTTP.class" archive="ImageResizer.jar" width=280 height=300>
<param name="postPage" value="votresiteweb.com/paged'envoi.php">

<!--
Le choix de l'utilisateur sera renvoyé dans la variable $subdirectory
et variables $txt pour les commentaires.
Seul la variable "postPage" doit être renseignée pour que l'applet fonctionne.
Liste des paramètres "facultatifs" :
 --!>
<param name="subdirectory" value = "Album1,maison">
<param name="redirectedPage" value = "merci.php">
<param name="compressionQuality" value="0.85">
<param name="maxOutputWeight" value="800">
<param name="outputWidth" value="1024">
</APPLET>
</BODY>
</HTML>

--------------------------------------------------------------------
Le exemple de fichier PHP associé :
<?php 
//Fonction de test
	if(count($_POST) > 0) { 
	   echo 'Données reçues en POST:'; 
	   foreach($_POST as $v) 
	      echo strrev(utf8_decode($v)).":"; 
	} 
	
else{
echo 'Pas de données recues' ;
}
//Recup fichier
    $tmp_file = $_FILES['file']['tmp_name'];
    // on copie le fichier dans le dossier de destination
    $name_file = strtolower(urldecode( $_FILES['file']['name'] )) ;
    $name_file2 = './galerie/'.$subdirectory.'/'.$name_file.'' ;
echo ' Je recois en parametre, nom '.$_FILES['file']['name'].' commentaires '.$txt.' et nom temp : '.$_FILES['file']['tmp_name'] ;
echo '

' ;
    
if( !move_uploaded_file( $tmp_file , $name_file2 ) )
      {
        exit( 'Impossible de copier le fichier '.$name_file2 ) ; //
//Envoyé un code erreur, autre que 200 à l'applet (ex : code de redirection)
      }
else {
echo  'Fichier mis sur le serveur ! à l adresse : '.$name_file2 ;
}
echo  '</body></html>';
?>

Conclusion :


J'espère résoudre le problème à pas mal de gens ! En particulier sur les serveurs free qui plante pour les fichiers de plus de 700Ko.
N'oublier cette histoire de signature de l'archive pour qu'il puisse accéder au disque dur !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.