<?php
if( isset($_POST['valpost']) ){ // si formulaire soumis
$target = 'images/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fileimage']['tmp_name'];
if( !is_uploaded_file($tmp_file) ){
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fileimage']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') ){
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fileimage']['name'];
$real = (substr($_SERVER['DOCUMENT_ROOT'],-1) == '/')? $_SERVER['DOCUMENT_ROOT'] : $_SERVER['DOCUMENT_ROOT'].'/' ;
$path_file= $real.'site_1/'.$target.$name_file;
// On récupère les dimensions du fichier
$infos_img = getimagesize($_FILES['fileimage']['tmp_name']);
if( !move_uploaded_file($tmp_file, $target . $name_file) ){
exit("Impossible de copier le fichier dans $content_dir");
}else{
//poids maximum en octet
$max_size = 100000;
//largeur maximale en pixel
$width_max = 425;
//hauteur maximale en pixel
$height_max = 425;
//Retourne la largeur d'une image
$imgWidth = $infos_img[0];
//Retourne la longueur d'une image
$imgHeight = $infos_img[1];
//Facteur largeur/hauteur des dimensions max
$whFact = $width_max/$height_max;
//Facteur largeur/hauteur de l'original
$imgWhFact = $imgWidth/$imgHeight;
//fixe les dimensions du thumb
if($whFact < $imgWhFact){//Si largeur déterminante
$thumbWidth = $width_max;
$thumbHeight = round($thumbWidth/$imgWhFact);
} else { //Si hauteur déterminante
$thumbHeight = $height_max;
$thumbWidth = round($thumbHeight*$imgWhFact);
}
//Crée le thumb (image réduite)
$imgThumb = ImageCreateTruecolor($thumbWidth, $thumbHeight);
//création de la nouvelle image à partir de l'URL $chemin_complet
$imageresize = imagecreatefromjpeg($path_file);
// redimension et rééchantillonnage de la nouvelle image
imagecopyresampled($imgThumb, $imageresize, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
//Insère l'image de base redimensionnée
imagejpeg($imgThumb, $path_file, 70);
//Tous pour le propriétaire, lecture et exécution pour les autres
chmod("{$target}{$nomImage}",0755);
//on libère de la mémoire
imagedestroy($imgThumb);
echo "Le fichier a bien été uploadé";
}
}
?>
et le formulaire
Code : Tout sélectionner
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="fileimage" size="40">
<input type="submit" name="valpost" value="Uploader" onclick="submit()" />
</form>
On peut toujours l'améliorer avec la gestion des .png etc...
Merci à tous
EDIT Je rajoute un petit plus...IE à une façon différente de gérer le cache que Firefox. Pour résoudre ce problème qui gêne en général l'affichage, je fais comme ça:
echo '<img src="'.$target . $name_file.'?'.time().'"/>';