Alors voilà,
Maintenant que j'ai assez profité de toutes les astuces que fournis ce site, je me suis dit que je pouvais essayer d'aider les autres.
J'ai cherché pendant longtemps un upload bien expliqué, et pour finir je me le suis fait moi-même ;) en cherchant sur le site de php.net. De plus j'ai aussi fait en sorte qu'il redimensionne direct l'image comme désiré.
Dans le zip il y a 2 fichiers d'upload un permettant une miniature qui garde les proportions de l'originale et l'autre qui crée une miniature aux dimension données, déformant l'original.
J'y ai maintenant rajouté un fichier avec formulaire su rla page .php qui permet d'uploader plusieurs fichiers en une fois :D
Etant un programmeur amateur, je vous demanderai de bien vouloir être indulgents.
Source / Exemple :
index.php :
-----------
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<?php
$nbr_champs = 10;
for($nbr=0;$nbr<$nbr_champs;$nbr++){
?>
<?php echo $nbr; ?>. <input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br />
<select name="fichier_rotation_<?php echo $nbr; ?>">
<option>Pas de rotation</option>
<option value="90">90° gauche</option>
<option value="270">90° droite</option>
<option value="180">180°</option>
</select>
<br />
<?php
}
?>
<input type="submit" name="Submit" value="Uploader">
<input name="nbr_f" type="hidden" value="<?php echo $nbr_champs; ?>">
</form>
</body>
</html>
upload.php :
---------------------------------------
<?php
// nombre de fichiers à uploader
$nbr_fichiers = $_POST['nbr_f'];
// boucle permettant d'uploader les fichiers un à un
for($nbr=0;$nbr<$nbr_fichiers;$nbr++){
// on récupère les infos du fichier à uploader
$fichier_temp = $_FILES['fichier_upload_'.$nbr]['tmp_name'];
$fichier_nom = $_FILES['fichier_upload_'.$nbr]['name'];
// on défini les dimensions et le type du fichier
list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);
// infos de contrôle du fichier
$fichier_poids_max = 500000;
$fichier_h_max = 1224;
$fichier_l_max = 1632;
// gestion du copyright
// 0 = pas de copyright
// 1 = ajout d'un copyright sur les images uploadées
// 2 = ajout d'un copyright sur les images uploadées
// mais tout en gardant une copie de l'image originale sans le copy.
$copyright = 2;
$opacite = 100;
// source du logo copyright
// ATTENTION si vous voulez utiliser un logo au format .jpg ou .png aucun soucis
// il suffit de remplacer imagecreatefromgif par imagecreatefromjpeg ou imagecreatefrompng
$copyright_logo = imagecreatefromgif('logo.gif');
// dossier de destination
$fichier_dossier = 'images/';
// extension du fichier
$fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);
// on renomme le fichier
$fichier_date = date("ymdhis");
$fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;
// on vérifie s'il y a bien un fichier à uploader
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
// on vérifie le poids du fichier
if (filesize($fichier_temp)<$fichier_poids_max) {
// types de fichiers autorises 1=gif / 2=jpg / 3=png
if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {
// on vérifie si l'image n'est pas trop grande
if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {
// si le fichier est ok, on l'upload sur le serveur
if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom)) {
// on donne un acces total sur le fichier
chmod ($fichier_dossier.$fichier_n_nom, 0777);
/******************
rotation de l'image
if (!empty($_POST['fichier_rotation_'.$nbr]) && is_numeric($_POST['fichier_rotation_'.$nbr])) {
$degre_rotation = $_POST['fichier_rotation_'.$nbr];
$image = getimagesize($fichier_dossier.$fichier_n_nom);
// création de l'image
if($fichier_type == "1") {
$source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "2") {
$source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "3") {
$source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
}
//rotation de l'image
$rotation = imagerotate($source,$degre_rotation,1);
//Le -1 permet de remplir les zones vides avec du transparent
// sauvegarde de l'image finale
if($fichier_type == "1") {
imagegif($rotation,$fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "2") {
imagejpeg($rotation,$fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "3") {
imagepng($rotation,$fichier_dossier.$fichier_n_nom);
}
if (($degre_rotation == '90') || ($degre_rotation == '270')) {
$n_larg = $fichier_haut;
$n_haut = $fichier_larg;
$fichier_larg = $n_larg;
$fichier_haut = $n_haut;
}
}
/*****************************
ajout d'un copyright sur les photos
if ($copyright == 0) {
// pas d'ajout de copyright
}
elseif ($copyright != 0) {
// source de la photo
if ($fichier_type===1) {
$copyright_photo = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
}
elseif ($fichier_type===2) {
$copyright_photo = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
}
else {
$copyright_photo = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
}
// on récupère les dimensions du logo et de la photo
$larg_logo = imagesx($copyright_logo);
$haut_logo = imagesy($copyright_logo);
$larg_photo = imagesx($copyright_photo);
$haut_photo = imagesy($copyright_photo);
// on calcule la position du logo, ici en bas à droite
$poslogo_x = $larg_photo - ($larg_logo + 5);
$poslogo_y = $haut_photo - ($haut_logo + 5);
// on colle le logo au dessus de l'image
imagecopymerge($copyright_photo, $copyright_logo, $poslogo_x, $poslogo_y, 0, 0, $larg_logo, $haut_logo, $opacite);
// si 1, on écrase l'image sans copyright
if ($copyright == 1) {
if ($fichier_type===1) {
imagegif($copyright_photo, $fichier_dossier.$fichier_n_nom);
}
elseif ($fichier_type===2) {
imagejpeg($copyright_photo, $fichier_dossier.$fichier_n_nom);
}
else {
imagepng($copyright_photo, $fichier_dossier.$fichier_n_nom);
}
}
// si 2, on crée une nouvelle image avec le copyright
else {
if ($fichier_type===1) {
imagegif($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
}
elseif ($fichier_type===2) {
imagejpeg($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
}
else {
imagepng($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
}
}
}
/********************
création de la miniature
// dimension maximale largeur et hauteur comprise
$taille_max = 100;
// si le fichier est plus grand que $taille_max on le miniaturise
if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {
// définition des dimensions
if (($fichier_haut > $taille_max) && ($fichier_haut >> $fichier_larg)) {
$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
$mini_larg = $taille_max;
}
else {
$mini_haut = $taille_max;
$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
}
// si le fichier est un .gif
if ($fichier_type === 1){
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreate($mini_larg, $mini_haut);
// fond blanc pour l'image
$fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// on rend transparent le fond blanc
imagecolortransparent($fichier_reduit, $fond_blanc);
// crée le fichier réduit définitif
imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est un .jpg / .jpeg
if ($fichier_type===2){
// définition de la qualité
$qualite=80;
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// crée le fichier réduit définitif
imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est un .png
if ($fichier_type===3){
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// crée le fichier réduit définitif
imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
}
else {
$nom_fichier_reduit = $fichier_n_nom;
}
/*************************************
enregistrement dans la base de données
nom du fichier non réduit :
----------------------------------
$fichier_n_nom
nom du fichier réduit :
----------------------------------
$nom_fichier_reduit
echo "Le fichier n°".$nbr." a été uploadé avec succès<br />";
}
else {
echo "Le fichier n°".$nbr." n'a pas pu être uploadé<br />";
}
}
else {
echo "Le fichier n°".$nbr." est trop grand<br />";
}
}
else {
echo "Le fichier n°".$nbr." n'a pas le bon format<br />";
}
}
else {
echo "Le fichier n°".$nbr." est trop lourd<br />";
}
}
else {
echo "Pas de fichier à uploader dans le champ n°".$nbr."<br />";
}
}
?>
Conclusion :
J'ai réussi à modifier de façon à pouvoir uploader plusieurs fichiers, comme on dit, quand on cherche on trouve :D
Good bye all, et merci.
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.