Avatar billede nextstop Nybegynder
26. oktober 2004 - 16:01 Der er 16 kommentarer og
1 løsning

Upload af fil virker ikke

Hvad kan være grunden til at følgende ikke virker? Der bliver ikke uploaded nogen fil, og count($_FILES) == 0. I php.ini er upload tilladt, og serverens (Windows XP) katalog for modtagne filer er sat til at alle må alt.

Når jeg angiver et filnavn og klikker på [Submit] hentes siden bare igen, og jeg får at vide at indexet 'userfile' ikke eksisterer.

Hvor er det lige, kæden springer af:

<body class="maintable">
<form method="post" action="<?=$PHP_SELF?>" enctype="multipart/formdata">
<table class="maintable" border="0" width="100%" style="height:50px;">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<tr valign="top">
<td colspan="2" class="cellheaderdark">Opdatering af databasen</td></tr>
<tr>
<td class="celldark">Med denne funktion kan du uploade en tekstfil til serveren og få denne importeret til databasen.<p>
Angiv et filnavn, og klik herefter på Importér.
</td>
<td class="celldark">
<input type="file" name="userfile" id="userfile" style="width:250px">
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="submit" class="button" value="Importér">&nbsp;
<input type="button" class="button" value="Luk" onclick="window.close();"
</td></tr></table>
<input type="hidden" name="action" value="upload">
<input type="hidden" name="table" value="<?=$table?>">
</form>
<?php
echo count($_FILES) . "<br>\n";
echo $_FILES['userfile']['error'] . "<br>" . $_FILES['userfile']['tmp_name'] . "<br>" . $_FILES['userfile']['size'];
?>

</body>
Avatar billede fojensen Nybegynder
26. oktober 2004 - 17:51 #1
jeg kan ikke se hvor kæden springer af, men hvis du skal videre kan jeg kun foreslå, at du checker html-koden som scriptet producerer, altså at formularen indeholder de rigtige oplysninger hvortil der skal uploades osv.
check også at filstørrelsen ikke er overskredet bare for en sikkerheds skyld...
kontroller derefter upload med nedenstående...

<?php
if (is_uploaded_file($_FILES['userfile'])) { // hvis fil uploaded
print_r ($_FILES['userfile']) // udprinter hele det array af info der følger med den uploadede fil
}
?>

deciderede fejl kan jeg ikke få øje på...
mvh.Folmer
Avatar billede mollevp Nybegynder
26. oktober 2004 - 18:31 #2
<form method="post" action="<? echo $_SERVER["PHP_SELF"]; ?> enctype="multipart/formdata">
Avatar billede mollevp Nybegynder
26. oktober 2004 - 18:32 #3
Fejl der sry

<form method="post" action="<? echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/formdata">

Måske...
Avatar billede nextstop Nybegynder
26. oktober 2004 - 21:02 #4
Næh, det bringer mig ikke rigtigt videre, desværre; action="..." bliver sat korrekt, og siden bliver jo rent faktisk også hentet igen - der bliver bare ikke uploaded noget.

Jeg tror faktisk ikke, der er fejl i koden, så problemet må ligge et andet sted.

->mollevp, <?=$x?> er short for <?php echo $x; ?>
Avatar billede sukos Juniormester
26. oktober 2004 - 21:06 #5
Hvad hvis du bruger:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/formdata">

og
if(isset($_FILES["usefile"])) {
echo $_FILES['userfile']['error'] . "<br>" . $_FILES['userfile']['tmp_name'] . "<br>" . $_FILES['userfile']['size'];
}


eller med andre ord, hvad står action som, hvis du bruger "vis kilde" ???
Avatar billede nextstop Nybegynder
27. oktober 2004 - 09:59 #6
->sukos

action="adminupload.php", hvilket også er korrekt.
Mine echo'er af $_FILES['userfile'], som giver fejl, er blot for at anskueliggøre, at $_FILES er et tomt array, selv om den ikke burde være det, når brugeren har trykket [submit].
Avatar billede nextstop Nybegynder
27. oktober 2004 - 10:10 #7
Dette forenklede eksempel fungerer heller ikke. Teksten "Ingen fil uploaded." printes altid:

<? // testupload.php ?>
<html>
<body>
<form name="uploadForm" method="post" action="testupload.php" enctype="multipart/formdata">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="file" name="userfile">
<input type="submit" name="submitButton">
</form>
<? if(isset($_FILE["userfile"])) echo "Count# " . count($_FILE["userfile"]);
else echo "Ingen fil uploaded."; ?>
</body>
</html>

Findes der evt. en log e.l. hvor man kan se om PHP har forsøgt at modtage/gemme en uploaded fil?
Avatar billede nextstop Nybegynder
27. oktober 2004 - 12:35 #8
Slet ingen gode ideer?

Jeg er forsøgt at installere:
- nyeste version af PHP 5.0.2
- Apache og konfigureret den til PHP
- Firefox browseren

Lige lidt hjælper det; uanset om jeg kører IE eller FireFox, IIS eller Apache, kan jeg ikke få PHP5 til at modtage en fil. Klient/server kører på min egen PC.
Avatar billede sukos Juniormester
27. oktober 2004 - 12:37 #9
Det skal ihverfald være $_FILES og ikke $_FILE
Avatar billede nextstop Nybegynder
27. oktober 2004 - 13:08 #10
->sukos, ja, det var en typo i eksemplet, sorry. Desværre er $_FILES (også) tom.
Avatar billede nextstop Nybegynder
27. oktober 2004 - 13:26 #11
Det underlige er, at selv om jeg vælger en stor fil på fx 6MB og klikker [Submit], så forsøger browseren ikke at uploade filen, siden hentes blot igen. At ændre på/fjerne MAX_FILE_SIZE gør ingen forskel.
Avatar billede mollevp Nybegynder
27. oktober 2004 - 19:41 #12
du kan formentligt ikke uploade filer større end 2mb pga. upload_max_filesize....
Avatar billede nextstop Nybegynder
27. oktober 2004 - 23:12 #13
De 6MB var blot et eksempel. Uanset størrelse finder der ingen upload sted.
Avatar billede sukos Juniormester
28. oktober 2004 - 01:02 #14
Er upload overhovedet tilladt i din php.ini?
Avatar billede nextstop Nybegynder
01. november 2004 - 15:20 #15
->sukos, ja, upload er tilladt ifølge php.ini.
Avatar billede nextstop Nybegynder
04. november 2004 - 13:56 #16
Hmm, det virker stadig ikke. Andre der har haft problemer med upload til PHP?
Avatar billede nextstop Nybegynder
23. marts 2005 - 11:15 #17
Det her virker:

<? // testupload.php ?>
<html>
<head>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="<?=$PHP_SELF?>">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type="file" name="userfile">
<input type="submit" value="Send file">
</form>
<? print_r($_FILES['userfile']) . '<br>';
echo 'Count# ' . count($_FILES['userfile']) . '<br>';
$uploadfile = "C:/temp/importdir/" . $_FILES['userfile']['name'];
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";
}

?>
</body>
</html>
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