Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2007, 13h59   #1
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 2
Points : 1
Points : 1
Par défaut [Upload] upload multiple de fichiers différents

Bonjour à tous,

Je suis un novice en matière de language de programation et s'il vous plait, soyez indulgent... Voici donc ma requête :
Je travail sur une site sur lequel je voudrais pouvoir recueillir de la part d'un visiteur une photo (fichier image), un CV (fichier texte), une démo audio (fichier audio).
J'ai donc chercher sur internet des tutos sur l'upload multiple.
J'ai créer un formulaire html qui me renvoie à un fichier php dont le contenu sera indiqué plus bas. Tout fonctionne bien mais je n'arrive pas à écrire le script permettant d'envoyer 3 fichier en même temps en contrôlant leur taille et leur format.
Si quelqu'un peut m'aider, ça serait sympa... Merci d'avance.

Formulaire HTML :

Code HTML :
1
2
3
4
5
6
7
8
9
10
<form method="POST" action="upload.php" enctype="multipart/form-data">
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="cv">CV :</label>
 <input type="file" name="cv" />
</p>
<p><label for="Demo">Demo mp3 :</label><input type="file" name="demo" /></p>
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>

Script du fichier uplaod.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
 $target = "upload/";  // Repertoire cible
 $max_size = 100000000000;  // Taille max en octets du fichier
 $width_max = 3000;  // Largeur max de l'image en pixels
 $height_max = 3000; // Hauteur max de l'image en pixels
 $extensions_ok = array(".jpg",".gif",".png",".jpeg");
 $noname = date('dmYhmi');
 //------------------------------------------------------------
 // DEFINITION DES VARIABLES LIEES AU FICHIER
 //------------------------------------------------------------
 $nom_file = $_FILES['photo']['name'];
 $taille = $_FILES['photo']['size'];
 $tmp = $_FILES['photo']['tmp_name'];
 $chemin = $target.$_FILES['photo']['name'];
 $extension = substr(strrchr($nom_file, "."), 0); // Récupération de l'extension
 //---------------------------
 // SCRIPT D'UPLOAD
 //---------------------------
		// On vérifie si le champ est rempli
		if($_FILES['photo']['name']){
				// On vérifie l'extension du fichier
				echo'<br /><div class="title">Traitement de l\'envoie</div>
				<div class="bot">';
				echo "Votre photo est du type : <strong>".$extension."</strong><br />";
				if(in_array(strtolower($extension),$extensions_ok)){
				// On récupère les dimensions du fichier
				$infos_img = getimagesize($_FILES['photo']['tmp_name']);
				// On vérifie les dimensions et taille de l'image
//						if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($taille <= $max_size)){
						// Si c'est OK, on teste l'upload
								if(move_uploaded_file($tmp,$chemin)){
								$ancien = "".$target.$_FILES['photo']['name']."" ;
								$new = "".$noname.".jpg";
								@unlink($new);
								rename($ancien, $new);
								echo "Les dimmentions sont de : <strong>".$infos_img[0]."x".$infos_img[1]."</strong><br />";
								echo "Le fichier a bien été envoyé et s'appele desormais : ".$new."<br />";
								echo"</div>";	  
								?>
				<SCRIPT LANGUAGE="JavaScript">
				document.location.href="succesupload.html" </SCRIPT>
				<?php
								}else{
								// Sinon on affiche une erreur système
								$new = 0 ;
								echo '<b>Problème lors de l\'upload !</b><br>';
								}
			//			}else {
						// Sinon erreur sur les dimensions et taille de l'image
 
				//		$new = 0 ;
				//		echo '<b>Erreur dans les dimensions ou taille de l\'image !</b><br>';
				//		}
				}else {
				// Sinon on affiche une erreur pour l'extension
				$new = 0 ;
				echo '<b>Votre image ne comporte pas une extension valide !</b><br>';
				?>
				<SCRIPT LANGUAGE="JavaScript">
				document.location.href="echecupload.html" </SCRIPT>
				<?php
				}
		}else{
		$new = 0;
		}
 
	$photo = quote_smart(strtolower($new)); 
 
		$reqa = "UPDATE $table19 SET ".$ltr[1]." = '1'  WHERE id_membre = '".$id."'";
		$resa = mysql_query($reqa) or die(mysql_error());
 
		echo'<div class="bot"><strong>Votre photo a bien été envoyée ( lettre '.$ltr[1].') </strong></div>';
//?>
//<script language="JavaScript">
//setTimeout("window.location='index.php?page=upload_album'",5000);
//</script>
Sonny.j est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 14h41   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
a priori c'est normal car ton code ne gere l'upload que de l'image seulement et pas des deux autres fichiers.

Il faut rajouter les traitement des upload pour les autres fichiers, en remplacant $_FILES[photo] par $_FILES[cv] et $_FILES[demo].

Sinon tu peux créer une boucle qui va traiter tous les upload dans une seule boucle.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 17h23   #3
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 2
Points : 1
Points : 1
Merci de ta réponse.
En effet, le script ne contient upload pour les autres fichiers, mais j'ai essayé et je n'arrive pas à trouver la forme que doit avoir le script sans erreur.
Voilà ce que je voudrais :

Après la saisie des fichiers photo/cv/demo, le script vérifie uniquement la taille et le format du fichier. Ensuite, on peut effectuer l'envoi.
Mes questions sont multiples, doit-on traiter l'upload séparément avec des lignes d'upload après chaque vérifications ou bien faire les vérifications puis ensuite traiter les lignes d'upload...
La forme me fait défaut.
Merci d'avance
Sonny.j est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web