upload image filesystem
Posté : 30 juin 2009, 11:28
Bonjour!
J'ai un formulaire de contact et je souhaite enregistrer plusieurs photos.
On va commencer par une.
Je souhaite enregistrer à la fois une image redimensionnée en 400px / 400 px mx et une miniature de 50px / 50px. J'ai choisi la méthode d'enregistrement dans le filesystem (avec un lien id_photo dans la db), j'ai donc un dossier /upload, et un dossier /upload/vignette.
Dans mon code html, j'ai ceci
Dans le code php:
Dans mon fichier fonction2.php, j'ai ceci
Malheureusement, ca ne fonctionne pas, ou ce trouve l'erreur?
J'ai un formulaire de contact et je souhaite enregistrer plusieurs photos.
On va commencer par une.
Je souhaite enregistrer à la fois une image redimensionnée en 400px / 400 px mx et une miniature de 50px / 50px. J'ai choisi la méthode d'enregistrement dans le filesystem (avec un lien id_photo dans la db), j'ai donc un dossier /upload, et un dossier /upload/vignette.
Dans mon code html, j'ai ceci
Code : Tout sélectionner
<input type="file" name="photo_01" id="photo_01" />Code : Tout sélectionner
<?php require_once('../fonction2.php'); ?>
<?php
if($_FILES['photo_01'])
{
$format_ok = array(
"image/pjpeg" => ".jpg",
"image/jpeg" => ".jpg",
"image/jpeg" => ".JPG",
"image/gif" => ".gif",
"image/png" => ".png",
);
$type_file = $_FILES['photo_01']['type'];
phpinfo(32);
if($_FILES['photo_01']['error'] == 0) //qd = à 0 c qu'il n'y a pas d'erreur
{
if(isset($formats_ok[$type_file]))
{
$new_path = "upload/";
$extension = $formats_ok[$type_file];
$photo_01 = date("ymdhis").$extension;
$last_path = $_FILES['photo_01']['tmp_name'];
$photo_01 = $new_path.$photo_01;
move_uploaded_file($last_path,$photo_01);
// redimension image
$file=$photo_01;
$hauteur=400;
$largeur=400;
//recup taille du photo
$size=getimagesize($file);
//print_r($size);
$largeur_origine=$size[0];
$hauteur_origine=$size[1];
//copie de l'image du HD vers mémoire du serveur dans $src
if($size['mime']=="image/jpeg" OR $size['mime']=="image/pjpeg")
{
$src = imagecreatefromjpeg($file);
}
elseif($size['mime']=="image/png")
{
$src = imagecreatefrompng($file);
}
//caul des dimensions finales
$ratio_x=$largeur/$largeur_origine;
$ratio_y=$hauteur/$hauteur_origine;
if($ratio_x>=1 and $ratio_y>=1)//si image plus petite que canevas
{
$largeur_finale=$largeur_origine;
$hauteur_finale=$hauteur_origine;
}
elseif($ratio_x < $ratio_y)//si largeur nettement plus petite
{
//echo "redim ratio_x <br>";
$largeur_finale=$largeur;
$hauteur_finale=ceil($hauteur_origine*$ratio_x);
}
else //inverse
{
//echo "redim ratio_y <br>";
$largeur_finale=ceil($largeur_origine*$ratio_y);
$hauteur_finale=$hauteur;
}
/*echo "dimensions de départ=$largeur_origine x $hauteur_origine<br>";
echo "dimensions max d'affichage = $largeur x $hauteur<br>";
echo "dimension_calculée=$largeur_finale x $hauteur_finale<br>";
echo "ratios=$ratio_x and $ratio_y";
exit;*/
//création de l'image de réception aux dimensions calculées
$dst = imagecreatetruecolor($largeur_finale,$hauteur_finale);
//copie de l'image origine ($src) dans l'image réception ($dst) en redimensionnant
imagecopyresized($dst,$src,0,0,0,0,$largeur_finale,$hauteur_finale,$largeur_origine,$hauteur_origine);
$gris = imagecolorallocate($dst,125, 125, 125);
imagestring($dst,2,2,2,$copyright,$gris);
if($_FILES['photo_01'])
{
include("fonction2.php");
$date=date("ymdhis");
upload_img("photo",400,400,$date,$nom,"upload/");
upload_img("photo",50,50,$date,"upload/vignettes/");
} //fermeture test existance du photo
//header("content-type: image/jpeg");//affiche image
imagejpeg($dst,$file,80);//ecrit image sur disque dur
//imagejpeg($dst,$new_file,80);//renvoie image au navigateur
imagedestroy($src);
imagedestroy($dst);
//end redimension image
}
else {echo 'erreur de format';}
}
}
?>
<?php
if($_FILES['photo_01'])
{
$date=date("ymdhis");
upload_img("photo_01",400,400,$date,"upload/");
upload_img("photo_01",50,50,$date,"upload/vignettes/"); // virer car pas de vignettes
} //fermeture test existance du fichier
?>Code : Tout sélectionner
<?php
function affiche_date ($date,$glue="/")
{
$array=explode('-',$date);
$chaine=$array[2].$glue.$array[1].$glue.$array[0];
return $chaine;
}
function convert_date($date,$glue="-")
{
$array=explode('/',$date);
$chaine=$array[2].$glue.$array[1].$glue.$array[0];
return $chaine;
}
?>
<?php
function affiche_img($nom,$chemin,$format,$alt_text,$large)
{
$photo_01 = $chemin.$nom.$format;
if(file_exists($photo_01))
{
echo "<img src=\"$photo_01\" width=\"$large\" alt=\"$alt_text\" />";
}
}
function upload_img($champ,$largeur=400,$hauteur=400,$nom)
{
if($_FILES['photo_01'])
{
$format_ok = array(
"image/pjpeg" => ".jpg",
"image/jpeg" => ".jpg",
"image/jpeg" => ".JPG",
"image/gif" => ".gif",
"image/png" => ".png",
);
$type_file = $_FILES['photo_01']['type'];
phpinfo(32);
if($_FILES['photo_01']['error'] == 0) //qd = à 0 c qu'il n'y a pas d'erreur
{
if(isset($formats_ok[$type_file]))
{
$new_path = "upload/";
$extension = $formats_ok[$type_file];
$photo_01 = date("ymdhis").$extension;
$last_path = $_FILES['photo_01']['tmp_name'];
$photo_01 = $new_path.$photo_01;
move_uploaded_file($last_path,$photo_01);
// redimension image
$file=$photo_01;
$hauteur=400;
$largeur=400;
//recup taille du photo
$size=getimagesize($file);
//print_r($size);
$largeur_origine=$size[0];
$hauteur_origine=$size[1];
//copie de l'image du HD vers mémoire du serveur dans $src
if($size['mime']=="image/jpeg" OR $size['mime']=="image/pjpeg")
{
$src = imagecreatefromjpeg($file);
}
elseif($size['mime']=="image/png")
{
$src = imagecreatefrompng($file);
}
//caul des dimensions finales
$ratio_x=$largeur/$largeur_origine;
$ratio_y=$hauteur/$hauteur_origine;
if($ratio_x>=1 and $ratio_y>=1)//si image plus petite que canevas
{
$largeur_finale=$largeur_origine;
$hauteur_finale=$hauteur_origine;
}
elseif($ratio_x < $ratio_y)//si largeur nettement plus petite
{
//echo "redim ratio_x <br>";
$largeur_finale=$largeur;
$hauteur_finale=ceil($hauteur_origine*$ratio_x);
}
else //inverse
{
//echo "redim ratio_y <br>";
$largeur_finale=ceil($largeur_origine*$ratio_y);
$hauteur_finale=$hauteur;
}
/*echo "dimensions de départ=$largeur_origine x $hauteur_origine<br>";
echo "dimensions max d'affichage = $largeur x $hauteur<br>";
echo "dimension_calculée=$largeur_finale x $hauteur_finale<br>";
echo "ratios=$ratio_x and $ratio_y";
exit;*/
//création de l'image de réception aux dimensions calculées
$dst = imagecreatetruecolor($largeur_finale,$hauteur_finale);
//copie de l'image origine ($src) dans l'image réception ($dst) en redimensionnant
imagecopyresized($dst,$src,0,0,0,0,$largeur_finale,$hauteur_finale,$largeur_origine,$hauteur_origine);
$gris = imagecolorallocate($dst,125, 125, 125);
imagestring($dst,2,2,2,$copyright,$gris);
if($_FILES['photo_01'])
{
include("fonction2.php");
$date=date("ymdhis");
upload_img("photo",400,400,$date,$nom,"upload/");
upload_img("photo",50,50,$date,"upload/vignettes/");
} //fermeture test existance du photo
//header("content-type: image/jpeg");//affiche image
imagejpeg($dst,$file,80);//ecrit image sur disque dur
//imagejpeg($dst,$new_file,80);//renvoie image au navigateur
imagedestroy($src);
imagedestroy($dst);
//end redimension image
}
else {echo 'erreur de format';}
}
}
}
?>