Avatar billede henrik2008 Nybegynder
31. januar 2012 - 15:56 Der er 15 kommentarer

upload af flere filer på samme tid, i et felt ?

Hej, er der nogle der ved hvordan man laver et php script, der
kan håndtere upload af flere filer samtidig i et felt?.

jeg har set nogle tutorials med upload af filer med 10 felter, et
for hvert fil, det er ikke hvad jeg kan bruge.

her er noget kode i html og php.

jeg ved at man kan upload filer i et felt ved at bruge et array sådan her <input type="file[]" name="fil" />.
når man skal have browseren til at vælge flere filer samtidig via en html form putter man denne kode her ind i html sætningen, sådan her <input type="file[]" name="fil" multiple />.

nu er det bare at overføre filer fra html formen til php scriptet via post til et array og en løkke, men hvordan gør man det ?.

her er noget kode.

<html>
<head>
</head>

<body>

<form action="http://localhsot/upload.php" method="post" enctype="multipart/form-data"/>


<input type="file" name="fil[]" id="fil[]" multiple/>

<input"submit" name="upload" value="upload"/>


</form>


</body>

</html>






<?php

foreach koden skal intregreres med move_uploaded_files eller copy_files, eller hvad nu det hedder, altså i en løkke med et
array, så alle filer bliver flyttet eller kopieret til eks, en folder.



foreach (fil$,$fil2 as $key) ??

{


move_uploaded_file($_FILES["fil"]["tmp_name"], ?
      "media/" . $_FILES["fil"]["name"]); ?



eller denne her.

copy ($_FILES["fil"]["tmp_name"],"media/" . $_FILES["fil"]["name"]);


}

?>
Avatar billede olebole Juniormester
31. januar 2012 - 18:02 #1
<ole>

Du løber bare filerne igennem i en løkke:

for ($i=0,$j=count($_FILES['fil']['tmp_name']); $i<$j; $i++) {
    echo $_FILES['fil']['tmp_name'].'<br>';
}

/mvh
</bole>
Avatar billede olebole Juniormester
31. januar 2012 - 18:03 #2
Ooooops ...!  =)

for ($i=0,$j=count($_FILES['fil']['tmp_name']); $i<$j; $i++) {
    echo $_FILES['fil']['tmp_name'][ $i].'<br>';
}
Avatar billede lordsasa Nybegynder
31. januar 2012 - 18:32 #3
Jeg har samme problem. Følger med her. Sig til om det der virkede :)
Avatar billede olebole Juniormester
31. januar 2012 - 18:35 #4
@lordsasa: Det kan du være helt rolig for, at det gør. Ellers havde jeg jo skrevet noget andet  *o)
Avatar billede henrik2008 Nybegynder
31. januar 2012 - 23:40 #5
ok, prøver den imorgen-

andre jeg har spurgt, siger at det ikke kan lade sig gøre med kun et (1) html input felt? (så har de vel ikke forstået koden multiple og at jeg bruger fil[] som et array!).
skal man ikke have copy () eller move_uploaded_files i dit script
olebole ?

hmm, man kan vel ikke bruge en loop som forach ($files as $key =>
$value) ?-
Avatar billede henrik2008 Nybegynder
31. januar 2012 - 23:46 #6
det jeg ikke forstår, er hvordan man "smelter" php fil funktion ind i en løkke med et array som parametre / værdier til overførelse, hvis man kan sige det sådan (eller osse er det dårlig
forklaret).
nu skal jeg bare lege lidt med scriptet for at forstå det.
Avatar billede henrik2008 Nybegynder
31. januar 2012 - 23:52 #7
ok, du bruger count , så vidt jeg husker er en funktion der
tæller alle elementer i et array automatisk og returenre antal elementer i arrayet!.

resten skulle være nemt at forstå, en  forøger $i++ og et betinget udtryk $i<$  osv, ganske som man altid
bruger i en løkke.
Avatar billede olebole Juniormester
01. februar 2012 - 00:13 #8
Du kan ikke nøjes med ét felt. Du skal have ti felter med name="fil[]" liggende i formen. Et inputfelt kan kun rumme én værdi - og derfor kun én fil
Avatar billede henrik2008 Nybegynder
01. februar 2012 - 10:40 #9
med mindre man køre input felterne i en for løkke!.
jeg troede bare at felter med input type="fil[]" og multiple,
vil sørge for multi valg af filer (ikke udførelse upload, det tager
php scriptet sig jo af).
man kan da vælge flere filer i html formen, men kun det.
ok så kan jeg godt forstå at jeg for, fra php scriptet, en fejl meddelse, som lign. underdefined index error, nok fordi man simpelhen ikke bare sådan kan overføre mange filer i et felt på samtidig!.
æv.
Avatar billede olebole Juniormester
01. februar 2012 - 17:01 #10
Der findes ikke en multiple attribute på et input element, så det giver under ingen omstændigheder mening.

Er du rigtig stærk i HTML, JavaScript, DOM og CSS, kan du godt skrive et script, der opstiller en liste af filer, der øjensynlig udvælges med ét file-felt - men det tvivler jeg på, du kan bide over
Avatar billede kristianlist Nybegynder
02. februar 2012 - 09:23 #11
@olebole

Det er ikke helt rigtigt. Nej, HTML4 standarden specificerer ikke en multiple attribut, men den er tilføjet i HTML5.

Se evt eks. her fra MDN: https://developer.mozilla.org/en/Using_files_from_web_applications

Mvh. Kristian
Avatar billede henrik2008 Nybegynder
02. februar 2012 - 11:05 #12
ja, det vil jeg da mene er rigtig (altså at multiple er en atribut agtig funktion, eller hvad man kalder den), for jeg har da selv
prøvet denne i en html form.
når denne atribut "mulitple" er tilføjet, kan jeg pludselig vælge
flere filer på sammentid, hvis jeg fjerner denne line, kan jeg kun
vælge 1 fil!.
prøv selv!.
Avatar billede olebole Juniormester
02. februar 2012 - 14:24 #13
@kristianlist: Ja, i teorien kan man få alt til at virke, men vi skriver til et WWW, hvor bunker af brugere ikke ville kunne bruge en HTML5-løsning, fordi deres browser ikke understøtter den. Og så er HTML4 stadig gældende standard - html5 bliver det efter planen i løbet af året  =)

@henrik2008: Der er ikke en multiple attribut på et INPUT. At det kommer i HTML5 - og at du kan bruge det i din browser - kan du ikke bruge til noget. Det kan masser af andre brugere ikke
Avatar billede kristianlist Nybegynder
03. februar 2012 - 12:42 #14
@olebole

Du antager jo også at han udvikler til www! Kan jo sagtens være det bare er for at prøve det af, eller også udvikler han til et intranet, hvor der er kontrol over browserne. Så er det jo en udemærket løsning.

Men ja, hvis man skal bruge det til www, så kan man kun bruge det, hvis man har et fallback. Hvilket der jo ikke er noget i vejen for :)
Avatar billede olebole Juniormester
03. februar 2012 - 15:11 #15
"Du antager jo også at han udvikler til www! Kan jo sagtens være det bare er for at prøve det af, eller også udvikler han til et intranet, hvor der er kontrol over browserne." >> Det tager jeg meget gerne et større væddemål på.

"Men ja, hvis man skal bruge det til www, så kan man kun bruge det, hvis man har et fallback. Hvilket der jo ikke er noget i vejen for" >> Helt korrekt, men det er jo præcis det, der ikke er tale om!  *o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester