J'ai un script sur lequel je travaille pour télécharger jusqu'à 10 fichiers à la fois. J'ai 10 entrées séparées dans mon html:Chargement de plusieurs fichiers php
<?php
for($i=0;$i<10;++$i) {
$num = $i+1;
echo '
<span>'.$num.'</span><input type="file" name="photo'.$i.'" />
';
}
?>
Et puis j'ai mon Uploader que je l'ai utilisé avant - sous une forme légèrement différente - mais ne peut pas se rendre au travail maintenant:
$path = "../path/to/folder/";
for($i = 0; $i < 20; $i++){
$fileName = "photo". "$i";
$filePath = "$path". "photo$i.jpg";
if (!empty($_FILES['$fileName']['tmp_name'][$i])) {
if (!copy($_FILES['$fileName']['tmp_name'][$i], $filePath)) {
echo "failed to save '.$filePath.'";
}
chmod($filePath, 0644);
}
}
Dans une version de travail de ce script, j'ai coupé la boucle for et juste numéroté chaque téléchargement individuellement (j'ai eu ce morceau de code sans la boucle 10 fois chacun avec son propre numéro). Cela a bien fonctionné, mais c'est vraiment très moche de regarder un morceau de code comme ça. Des idées pour faire ce travail?
mise à jour:
Pas encore avoir un peu de chance, j'apprécie toute l'aide. Je pense que mon problème réside en ce que les $ _FILES tableaux ne sont pas peuplées édite correctement comme suit:
HTML modifiée:
<?php
for($i=0;$i<10;++$i) {
$num = $i+1;
echo '
<span>'.$num.'</span><input type="file" name="photo[]" />
';
}
?>
et le script Uploader à:
$path = "../path/to/folder/";
for($i = 0; $i < 20; $i++){
$fileName = "photo". "$i";
$filePath = "$path$fileName.jpg";
if (!empty($_FILES["photo"]["tmp_name"][$i])) {
if (!copy($_FILES["photo"]["tmp_name"][$i], $filePath)) {
echo "failed to save '.$filePath.'";
}
chmod($filePath, 0644);
}
}
Combinez les réponses de jsuggs et Pekka, je peux voir que Pekka a corrigé votre erreur de devis sans le mentionner. –
Vérifiez également que $ _FILES [$ fileName] 'est bien défini. Sinon, vous obtiendrez une erreur: 'if (isset ($ _FILES [$ fileName])) ...' – poke