Avatar billede webcreator Nybegynder
26. juni 2003 - 12:08 Der er 28 kommentarer og
1 løsning

Tjek fil-størrelse før upload

Hej.

Det er ret træls, hvis en bruger sidder og venter på, at en 5 MB stor fil bliver uploadet, og først 5 minutter efter, får at vide, at filen er for stor. Hvordan kan jeg tjekke størrelsen inden upload ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:19 #1
Tilføj denne til din upload form.

<input type="hidden" name="MAX_FILE_SIZE" value="75000">

Hvor 75000 i dette tilfælde angiver at filen ikke må være større end 75 kb
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:20 #2
Jamen mit file-felt skal da også have et navn. Så jeg kan vel ikke have 2 name-felter ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:21 #3
det skulle vel egentlig have været et svar ;o)
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:21 #4
to name felter ?
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:22 #5
Ja, skal min file-form ikke have et navn ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:22 #6
alle input felter skal da have et navn (attributten name=""), ellers kan du jo ikke referer til det.

Se i øvrigt http://dk.php.net/manual/en/features.file-upload.php
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:22 #7
Jeg kopiere den jo til serveren sådan her :
@copy($file, "$absolute_path/$file_name");
File_name er navnet på mit felt skulle jeg mene.
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:23 #8
pbudk > Ja, er klar over, at de skal have navne :)
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:24 #9
du kan jo i princippet have lige så mange input "felter" som du vil, blot de har forskellige navne.
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:26 #10
Det er IKKE det der er problemet !
Men jeg tror jeg har forstået det nu. MAX_FILE_SIZE skal ikke nødvendigvis ligge i samme input-form som feltet, hvor man angiver stien til filen.

Duer din metode i alle browsere ? Med andre ord - er det W3C standard ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:26 #11
hvordan ser selve din upload form ud ?

For jeg forstår slet ikke hvad du mener med 2 navne ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:29 #12
det er i hvert fald den metode, der anbefales i dokumentationen, den er ikke 100% bulletproof, men det er det bedste du kan få.

Se "Warning" på det link jeg jeg lagde tidligere.
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:32 #13
Ok, tak for hjælpen :)
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:34 #14
Jeg tester det lige senere :)
Avatar billede pbudk Nybegynder
26. juni 2003 - 12:35 #15
jeg tror der er lidt begrebsforvirring.

<input type="hidden" name="MAX_FILE_SIZE" value="75000"> er jo bare et ekstra input field, der skal ligge inden for samme <FORM ...> som dit <input type="file"> ikke i selve file feltet.

Blev det lidt mere klart ?
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:38 #16
Det var nøjagtig det jeg konstaterede for lidt siden :-)
Men tak for det alligevel.
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:00 #17
Det der fil-str. tjek virker ikke rigtigt. Koden :

<form action="add_gem.php" method="post" enctype="multipart/form-data">
<input type=file name=file style="width: 250px; height: 22px">
<input type=hidden name="MAX_FILE_SIZE" value="1">
<input type="submit" style="width=250px; height=22px" value="UPLOAD">

Der er også tekst med. Men det er jo bare en stak andre inputs.
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:03 #18
</form> til sidst self.
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:06 #19
Kan se, at der ikke bruges enctype på det link du sendte mig. Prøver lige uden så
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:07 #20
Duer jo ikke, når der både er tekst og fil.
Avatar billede pbudk Nybegynder
26. juni 2003 - 13:16 #21
jo - der skal være enctype="multipart/form-data"

Hvad mener du med at at det ikke dur, når der både er tekst og fil ?
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:18 #22
Det er fil-størrelses-tjekket, der ikke virker. Jeg har sat værdien til 1. Men jeg kan nemt uploade flere MB..
Avatar billede pbudk Nybegynder
26. juni 2003 - 13:26 #23
Metoden virker helt fint her.

Måske det er din php, der ikke håndterer selve upload'en rigtigt.
Må jeg prøve at se koden ?
Avatar billede pbudk Nybegynder
26. juni 2003 - 13:27 #24
jeg har testet med dette eksempel fra ovenstående link.

<?php
// In PHP earlier then 4.1.0, $HTTP_POST_FILES should be used instead of $_FILES.
// In PHP earlier then 4.0.3, use copy() and is_uploaded_file() instead of move_uploaded_file
$uploaddir = '/data3/html/uploads/';
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print "File is valid, and was successfully uploaded.  Here's some more debugging info:\n";
    print_r($_FILES);
} else {
    print "Possible file upload attack!  Here's some debugging info:\n";
    print_r($_FILES);
}
?>
<html>
<body>
<form enctype="multipart/form-data" action="test.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
</body>
</html>
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:27 #25
Hvordan kan mit PHP script være problemet ? Den burde komme med en blokering _inden_ den kommer på mit php-script.
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:28 #26
Skulle jeg da mene :)
Avatar billede pbudk Nybegynder
26. juni 2003 - 13:41 #27
Den kommer jo ikke med en "blokering" browseren uploader bare ikke filen.

Er du sikker på at filen rent faktisk bliver uploadet ? (derfor ville jeg gerne se koden)
Avatar billede webcreator Nybegynder
26. juni 2003 - 13:47 #28
Det jeg skal bruge er et system, som validere filen INDEN den uploades. Hvis den er for stor, gives der en fejl. Jeg vil ikke have noget, der bare undlader at uploadingen "skippes"
Avatar billede pbudk Nybegynder
26. juni 2003 - 14:04 #29
og forskellen er ?

Du tjekker jo bare om filen er uploadet med is_uploaded_file og giver en fejl meddelelse til brugeren feks. "Din fil er ikke blevet uploadet, dette kan skyldes at den er større end ....."
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