PHP som tar emot flera filer

Tråden skapades och har fått 9 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2004-11-15 16:41

Hej,

Undrar om någon har erhfarenhet av ett script som är kopplat till ett formulär där man kan sända flera filer samtidigt.

Och kan någon säga om det är möjligt att göra det dynamiskt så att man kan välja att sända odefinierat antal filer.

Helst i PHP men om inte detta är möjligt kan ni ge andra förslag hur man förverkligar det.

  • Medlem
  • Gävle
  • 2004-11-15 16:45

Det är möjligt genom att dynamiskt skapa fler <input type="file">.

Det är inte möjligt att ladda upp fler filer med samma <input type="file">.

Ursprungligen av tjogin:

Det är möjligt genom att dynamiskt skapa fler <input type="file">.

Det är inte möjligt att ladda upp fler filer med samma <input type="file">.

Jag har för ett tag sedan stött på samma problem. Min lösning var att använda en JavaApplet som kunde skicka flera filer via POST-metoden till ett PHP-script.
Denna tog sedan emot dessa som en array av FILER, som den loopade igenom om jag minns rätt...

/Martin

  • Medlem
  • Stockholm
  • 2004-11-15 17:30
  • Medlem
  • International user
  • 2004-11-15 21:22
Ursprungligen av kalleh:

Jag har förökt enligt detta. Men jag är rätt ny på PHP så jag fattar inte riktigt varför det inte fungerar.

Detta har jag som formulär:

<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>

Hur skall jag då modifiera PHP scriptet så det tar emot flera filer

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = 'files/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

  • Oregistrerad
  • 2004-11-15 18:05

Det borde väl vara möjligt om man lägger namnen/värdena på file som en vektor. Välj en bild(tex) och det loopas up en ny file med namnen/värdena i en vektor som vid uppladningen til DB nås av foreach... Kanske, en tanke i alla fall. Har aldrig provat, men blev faktiskt lite sugenpå att koda nu

  • Medlem
  • Stockholm
  • 2004-11-15 21:45

Du måste loopa igenom då userfile blir en array och innehåller mer än en sak. Så gör en foreach loop eller något festligt.

  • Medlem
  • International user
  • 2004-11-15 22:00
Ursprungligen av Linus:

Du måste loopa igenom då userfile blir en array och innehåller mer än en sak. Så gör en foreach loop eller något festligt.

Problemet är att om jag gör en loop när vet jag när lopen skall sluta. Om jag har ett okänt antal filer.

  • Medlem
  • Stockholm
  • 2004-11-15 22:24
if(is_array($userfile)) {
   // de har bara laddats upp en fil
} else {
   // flera filer har laddats upp, loopa igenom dem
   foreach($array AS $key=>$val) {
       // här gör du något med en fil i taget
   }
}
  • Oregistrerad
  • 2004-11-16 07:35

foreach loopen kännar av antalet variabler i vektorn och slutar när den är tom. Tydligen räcker det med att lägga namnet som "vektor[]" för allihopa för att den skall fylla i med 0, 1, 2 osv. Nytt för mig. Trode att man var tvungen att lopa fram tex "vektor[$loop]". Nu är jag änu mer kodsugen

1
Bevaka tråden