Hämta filstorlek innan uppladdning

Avdelningen för webbrelaterad programmering och grafisk design.
Post Reply
User avatar
tkh
Hedersbit
Posts: 3901
Joined: 2002-03-08 0:41:22
Location: Landskrona (Umeå)
Contact:

Hämta filstorlek innan uppladdning

Post by tkh »

Har lagt upp en liten upladdningssida på min burk, den ser ut såhär för övrigt:
http://tkh.dnsalias.com/upload/ (fungerar bara om min dator är igång, dvs dagtid typ)

Hur som helst, den är inte viktig för min fråga. Jag vill ha en reglering på hur stor fil man får ladda upp, frågan är bara hur jag gör det. Jag gör en inställning i min machine.config, då kan jag sätta maxstorlek, och om den överskrids så kommer "Sidan kan inte visas" fram. Fult.

Programmerar i ASP.NET, VB i Visual Studio, men där hittar jag ingen funktion som passar. Den enda jag hittat som kommer åt filstorleken kan bara göra det när filen redan är uppladdad eller redan ligger lokalt.

Finns det något annat sätt? Typ javascript eller dylikt som kan hämta filstorleken innan det är för sent?
"Just because you are unique does not mean you are useful."
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

Innan du sparar filen med HttpPostedFile.SaveAs() så kan du ju kolla HttpPostedFile.ContentLength, den ger dig en Int32 med filstorleken i bytes.

Men detta kanske du redan vet om?
"när filen redan är uppladdad", för browsern kommer att skicka hela filen till servern innan din kod körs...
IL1
User avatar
tkh
Hedersbit
Posts: 3901
Joined: 2002-03-08 0:41:22
Location: Landskrona (Umeå)
Contact:

Post by tkh »

Mirza* wrote:"när filen redan är uppladdad", för browsern kommer att skicka hela filen till servern innan din kod körs...
Då tappar man ju som meningen med storlekskollen, om den har laddats upp innan man kan kolla hur stor den är, eller hur?

Lite dumt om personen har laddat upp en 40MB stor fil (med modem ;) ) och sedan säger sidan att den är för stor så den inte sparas. Det sättet funkar, har provat, men som sagt är det ju för sent.
"Just because you are unique does not mean you are useful."
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

tkh wrote:Då tappar man ju som meningen med storlekskollen, om den har laddats upp innan man kan kolla hur stor den är, eller hur?

Lite dumt om personen har laddat upp en 40MB stor fil (med modem ;) ) och sedan säger sidan att den är för stor så den inte sparas. Det sättet funkar, har provat, men som sagt är det ju för sent.
Berätta för användaren vad max är, sen kan han bara skylla på sig själv :)

Det kanske går med någon sorts JScript-ActiveX-blandning som kollar filen client side på användarens hårddisk. Men det är förmodligen ingen bra idé =/
IL1
User avatar
tkh
Hedersbit
Posts: 3901
Joined: 2002-03-08 0:41:22
Location: Landskrona (Umeå)
Contact:

Post by tkh »

Mirza* wrote:Berätta för användaren vad max är, sen kan han bara skylla på sig själv :)
Det lutar åt det håller :)
"Just because you are unique does not mean you are useful."
User avatar
Peter Wall
Hedersbit
Posts: 7026
Joined: 2002-03-08 0:52:56
Location: Stockholm
Contact:

Post by Peter Wall »

Jag har ingen lösning på problemet, men som jag förstår att problemet är, så borde det väl finnas någon form av lösning då flertalet "uppladdnings-siter" (t.ex yahoo-briefcase) har ett max på kanske 5mb/fil...? Måhända är jag ute o cyklar, o inte heller ger jag något svar på problemet.. men men.. :P
Diplomerad webbutvecklare
Microsoft Certified Professional Windows 2003
Microsoft Certified Technology Specialist Windows Vista
"Did you know kidneys and applesauce are a delicacy in Sweden? I'm gonna get my applesauce back!"
jstrom
Posts: 1732
Joined: 2002-05-28 22:18:35
Location: Göteborg
Contact:

Post by jstrom »

Uhm vet inte hur ASP har löst det, men när du laddar upp en fil i PHP så får du alltid filesizen med... Borde ju gå i ASP oxå.. och sen e det väl bara o kolla om den e större än va du tillåter?..
User avatar
tkh
Hedersbit
Posts: 3901
Joined: 2002-03-08 0:41:22
Location: Landskrona (Umeå)
Contact:

Post by tkh »

jstrom wrote:Uhm vet inte hur ASP har löst det, men när du laddar upp en fil i PHP så får du alltid filesizen med... Borde ju gå i ASP oxå.. och sen e det väl bara o kolla om den e större än va du tillåter?..
Jag har inte hittat någon funktion som ger mig storleken innan den har skickats än så länge i alla fall.

Är jag ensam här med att leka med ASP.NET? Vad jobbigt :P
"Just because you are unique does not mean you are useful."
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

tkh wrote:Jag har inte hittat någon funktion som ger mig storleken innan den har skickats än så länge i alla fall.
Kan tänka mig att det är rätt logiskt att servern först måste få filen för att vara säker på storleken... Annars får den kanske lita på att klienten inte ljuger =/

Som sagt, ActiveX-nånting.. vill minnas att jag en gång gjorde en sida som client side ändrade lite i min c:\autoexec.bat :) Borde gå att kolla filstorlek... om det nu är värt besväret för användaren...
tkh wrote:Är jag ensam här med att leka med ASP.NET? Vad jobbigt :P
Du och ingen...
User avatar
tkh
Hedersbit
Posts: 3901
Joined: 2002-03-08 0:41:22
Location: Landskrona (Umeå)
Contact:

Post by tkh »

Mirza* wrote:Kan tänka mig att det är rätt logiskt att servern först måste få filen för att vara säker på storleken... Annars får den kanske lita på att klienten inte ljuger =/
Tycker att den borde skicka filstorleken först, så att servern vet att den tagit emot hela när strömmen slutat strömma. Men jag är inte så insatt i hur protokollen hanterar sånt där.
"Just because you are unique does not mean you are useful."
Post Reply