Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

MVC5 - File upload - grootte checken vóór upload

Pagina: 1
Acties:

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 30-10 17:25

SideShow

Administrator

Topicstarter
Hallo

Ik wil op de server de filesize checken van een file die wordt upgeload.
Ik zit reeds even te zoeken, maar het probleem is dat de ActionResult "Upload" methode in mijn MVC controller slechts opgeroepen wordt, als de file volledig werd upgeload.

Client side wordt jquery-upload gebruikt; het probleem hier is dat IE8 en IE9 geen size validation heeft. Dit is een beperking van de browser, niet van jquery-upload.

Ik zie een mogelijkheid aan de hand van de "ContentLength" header, maar zoals reeds gezegd, wordt de file eerste helemaal opgeladen alvorens MVC in de methode komt.

Ik denk dat multipart upload geen oplossing biedt, omdat ik dan niet de totale ContentLength heb, maar de "chunk length".

Bedoeling is voorkomen dat de gebruiker een file upload van 100MB, als de server max. request size op 95MB staat.

Er moet toch een manier zijn om direct als de request toekomt op de server, die header te controleren?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik denk dat je daarvoor een custom HttpHandler zult moeten schrijven. Alle filters die je op een action los kunt laten gebeuren volgens mij pas na de ModelBinder, en dan zijn de gegevens dus al uitgelezen.

Overigens kun je als het goed is wel de maximale request size in de web.config configureren, maar dat kan volgens mij niet op een per Action scope. ( MSDN: httpRuntime Element (ASP.NET Settings Schema) )

[ Voor 42% gewijzigd door Woy op 24-06-2014 15:44 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 02:52
Anders gewoon met een beetje "graceful degradation".

Je zet in de web.config dat het niet groter mag zijn dan 100mb, dan wordt je als het niet eerder is afgevangen naar een error pagina gestuurd.

Voor alle modernere browsers controleer je het met Javascript.

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 30-10 17:25

SideShow

Administrator

Topicstarter
Dat is net het probleem. Ik wil niet dat mn gebruikers eerst 99.9MB uploaden en zitten wachten, om vervolgens te falen.

Ik heb het ondertussen geprobeerd met een HttpModule die dus onmiddellijk de contentlength controleert, en dat zou werken, ware het niet dat jquery-upload grote files koppig in chunks blijft uploaden. De setting om dit niet te doen, wordt genegeerd.

  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 02:52
Maar zit het merendeel van je gebruikers dan nog op IE8 - IE9?
Want dat is juist mijn punt, die enkele die meestal nog dat soort browsers gebruiken hebben dan gewoon pech.
Maar ik had eigenlijk in mijn hoofd dat als je de request length in de web.config instelt, dat er dan eerder ingegrepen wordt. Dus niet in de code in de request de file content length checken, want dat is sowieso te laat.

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 00:07
Je zult voor de oudere browsers dan Flash of Silverlight moeten gebruiken voor het upload formulier. Daarmee kun je namelijk wel de bestandsgrootte achterhalen. Bijvoorbeeld: https://github.com/Jahdrien/FileReader

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Je kan het beste de filesize client side afvangen voordat deze verstuurt wordt.

Zoiets: http://www.dotnet-tricks....pload-a-file-in-MVC4.html

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 30-10 17:25

SideShow

Administrator

Topicstarter
Inderdaad, het betreft software voor de Kerk .... naar schatting zit 50% nog met IE9 en minder.
Flash is ook geen optie, want volgens de product owner moet het ook op tablets werken (iPad, ...)
@Viper, dat bekijk is nog eens !

Bedankt allemaal

  • HuHu
  • Registratie: Maart 2005
  • Niet online
En een conditional tag voor IE dat gebruikers <IE9 waarschuwt geen bestanden >100 MB te uploaden? Dat scheelt wellicht al, als je gebruikers het zelf even controleren voor het uploaden. Mocht iemand het dan alsnog proberen, dan krijgen ze toch een foutmelding en voelen ze zichzelf dom en doen het geen volgende keer.

  • Merethil
  • Registratie: December 2008
  • Laatst online: 09:03
SideShow schreef op woensdag 25 juni 2014 @ 19:13:
Inderdaad, het betreft software voor de Kerk .... naar schatting zit 50% nog met IE9 en minder.
Flash is ook geen optie, want volgens de product owner moet het ook op tablets werken (iPad, ...)
@Viper, dat bekijk is nog eens !

Bedankt allemaal
Hoe wil je via de iPad files van 100 MB gaan uploaden? Ik wist niet eens dat je vanuit iOS naar een website files kan uploaden...

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
SideShow schreef op woensdag 25 juni 2014 @ 19:13:
naar schatting zit 50% nog met IE9 en minder.
Tja, naar mijn schatting zit 0% op <IE10 oftewel meten is weten en schatten is over het algemeen enkel extra uren maken.
Flash is ook geen optie, want volgens de product owner moet het ook op tablets werken (iPad, ...)
Oftewel implementeer flash, implementeer een gracefull degradation naar html5 en implementeer daarbovenop weer een gracefull degradation naar html4 (waarbij er dus 0 size-checks zijn)

Dan kan je flash en html5 desgewenst nog omdraaien als je dat beter lijkt...

  • las3r
  • Registratie: Augustus 2006
  • Laatst online: 21-11 12:44
Ik liep tegen hetzelfde probleem aan, en heb toen plupload ingezet (www.plupload.com) - deze heeft een stuk of 5 fallbacks waar je mee kunt werken (en specificeren per browser / supported feature).

Dan heb je wél de mogelijkheden :)

Suc6

[ Voor 4% gewijzigd door las3r op 26-06-2014 11:55 ]


  • ZpAz
  • Registratie: September 2005
  • Nu online
Merethil schreef op woensdag 25 juni 2014 @ 23:25:
[...]


Hoe wil je via de iPad files van 100 MB gaan uploaden? Ik wist niet eens dat je vanuit iOS naar een website files kan uploaden...
Fotos' en videos werken wel. Druk je op een upload knopje krijg je volgens mij gewoon de "foto rol" om een foto / video uit te kiezen.
SideShow schreef op woensdag 25 juni 2014 @ 19:13:
Inderdaad, het betreft software voor de Kerk .... naar schatting zit 50% nog met IE9 en minder.
Flash is ook geen optie, want volgens de product owner moet het ook op tablets werken (iPad, ...)
@Viper, dat bekijk is nog eens !

Bedankt allemaal
Je moet dan een combinatie van de technieken doen. Als de JS functies voor het controleren van de bestandsgrote niet aanwezig zijn ga je terug vallen naar Flash. Op een iPad en andere tablets zullen de JS functies wel werken.

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Wat is er mis met:?!?
code:
1
<input type="file"> Note: bestand mag niet groter zijn dan 90MB!

Maak je niet druk, dat doet de compressor maar


  • L01
  • Registratie: December 2003
  • Laatst online: 17-11 21:53

L01

DJMaze schreef op donderdag 26 juni 2014 @ 19:38:
Wat is er mis met:?!?
code:
1
<input type="file"> Note: bestand mag niet groter zijn dan 90MB!
Omdat de gemiddelde gebruiker totaal geen idee heeft van bestand grote.

[ Voor 60% gewijzigd door L01 op 27-06-2014 10:40 ]

Hi, I'm a signature virus. Put me in your signature to help me spread.

Pagina: 1