Upload de plusieurs fichiers

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 308 fois - Téléchargée 29 fois

Contenu du snippet

ce petit script va vous permettre d'uploader plusieurs fichiers d'un coup

Source / Exemple :


//dans index.php
<body>
<form action=finftp.php method=post name=form_edit enctype="multipart/form-data">
<?php
$a=10;
for ($i=0;$i<=$a;$i++)
echo "<input type=file name=file[$i] enctype=\"multipart/form-data\" size=40><br>";
?>
<input type=submit>
</form>

//dans finftp.php
<?php
$ftp="ftp.adresse.com";
$ftpuser="user";
$ftppass="pass";
$a=0;
$ftpc=ftp_connect($ftp); 
$result_login=@ftp_login($ftpc, $ftpuser, $ftppass); 
phpinfo();
if ((!$result_login) || (!$ftpc))
{ 
	die("impossible de se connecter");
}
else
{
	while($a<sizeof($HTTP_POST_FILES["file"]["name"]))
	{
		if (!(copy($HTTP_POST_FILES["file"]["tmp_name"][$a],"./temp/".$HTTP_POST_FILES["file"]["name"][$a])))
			die ("echec de la copie de ./temp/".$HTTP_POST_FILES["file"]["name"][$a]." en local");
		else
			echo "copy de ./temp/".$HTTP_POST_FILES["file"]["name"][$a]." réussie<br>";
		$local_file= "./temp/".$HTTP_POST_FILES["file"]["name"][$a];
		$remote_file= "html/upload/".$HTTP_POST_FILES["file"]["name"][$a];
		$put= @ftp_put($ftpc, $remote_file, $local_file, FTP_BINARY); 
		if (!$put)
		{ 
			die("upload de $local_file a echoue \n<br>"); 
		} 
		else
		{ 
			echo "upload de $local_file reussi \n<br>"; 
		} 
		$a++;
		if (!(@unlink($local_file)))
			echo("erreur lors de la suppression");
	}
}
?>

Conclusion :


c t pas trop dur mais encore fallait il y penser...et comme j'ai pas vu ce code sur ce site.....je le post :)

/!\ WARNIIINNGGG!!!!

si vous etes sous Linux attention a bien changer les proprietes du dossier "./temp/" a 777 (chmod 777 temp) :)

A voir également

Ajouter un commentaire

Commentaires

ronanry
Messages postés
190
Date d'inscription
lundi 25 novembre 2002
Statut
Membre
Dernière intervention
22 décembre 2009

en fait shibo source c'est tout con (désolé du délai de reponse mais bon.....)

l'action de ton form pass par une methode GET (d'ou le ?file=xxx...derriere le nom de ton fichier)
alors que mon script utilise la methode POST
d'où un pb de conflit...
si tu dis a ton script "bon tu es pret je te parle en anglais?" et que tu lui parle en allemand...il va avoir qques pepins...bah la c pareil:D

si tu veux que ca fonctionne met ca dans ta page <form action"index.php" method=post>
par defaut tu peux avoir seulement <form action"index.php"> (ce qui met get par defaut..)


(attention aussi a verifier le nom de tes variables ensuite dans ton switch
ne les passant plus en get mais en post ca risque de provoquer qqques changement suivants ton hebergeur (et le php utilisé))
Shibo_Sources
Messages postés
19
Date d'inscription
dimanche 2 janvier 2005
Statut
Membre
Dernière intervention
3 août 2008

Il est pas mal ton script. Et très utile. Perso je fait un genre de mini client ftp en php avec possibilité d'upload en php et ftp (au cas ou un des deux marche pas).

Je suis loin d'être un expert en php mais je me debrouille tant bien que mal. Pourtant j'ai un soucis avec ton script. Voici mon pb:
Si je comprend bien comment sa marche les $_POST et autres (c tout neuf pour moi) sa fait passer un array depuis le form jusqu'a l'upload (si c'est faux arretez moi).

Donc ... J'utilise un switch dans mon index pour n'avoir qu'une seul page php. Je crée donc des functions qui sont appelées en temps voulu. L'action de mon form n'appel pas un fichier mais donc une function (index.php?file=xxx&switch=do_upload ar ex). Le pb c'est que l'array ne passe pas. J'ai donc mis $_POST dans mon switch et $data dans ma function pour recupérer l'array qui sera nomer $data. Evidement, sa marche pas: l'array $data est vide ...

J'ai donc essayer de virrer $_POST et $data de mon switch/function pour appeler l'array via $HTTP_POST_FILE. Normalement sa devrait aller, je comprend po trop ou sa cloche.

Un ptit coup de main serais pas de refus :)
ronanry
Messages postés
190
Date d'inscription
lundi 25 novembre 2002
Statut
Membre
Dernière intervention
22 décembre 2009

reponse a dominion

tu m'explique la difference entre $i <= $a et $i <= $a
:D j'pense juste que tu t'es planter sur ce que tu voulais mettre
bref la n'etait pas la question

si tu regarde le programme, $a ne me sert que de valeur tampon
au début (dans le for) ca permet simplement de mettre 10 chp texte pour envoyer
ca permet d'en mettre 22 sans se prendre la tete (par exemple)

et dans la suite du prog, tjs tampon, il me sert simplement a savoir ou j'en suis dans le tableau des fichiers envoyés

donc si tu peux un peu expliquer ton $i<=$a, je pense que je comprendrais un peu plus :-p
cs_dominion
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

if ($theimage_type != "image/jpeg"){etc...}

Oui mais en attendant il faut avoir le type de l'image : tu met une variable...

En fait, il faut faire mime_content_type($file); et là tu auras "image/jpeg"...

Un autre truc : ronanry, pourquoi tu mets $i <= $a... C'est ridicule : a ne vaut plus le nombre de fichiers que tu veux envoyer... Fait plutot $i <= $a.
cs_PasQ
Messages postés
1
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
22 décembre 2004

Juste
if ($theimage_type != "image/jpeg"){etc...}

Non ?

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.