Nagy fájlok feltöltése a FileUpload vezérlővel

Az ASP.NET a 2.0 óta tartalmazza a FileUpload vezérlőt. Használata elég egyszerű, például így lehet a feltöltött fájlokat a webalkalmazás files nevű mappájába menteni:

<form id="mainForm" runat="server">
    <asp:fileupload ID="upload" runat="server">
    </asp:fileupload>  
    <br />
    <asp:Button ID="btnOK" runat="server" Text="Feltöltöm" onclick="btnOK_Click" />  
</form>
protected void btnOK_Click( object sender, EventArgs e )
{
    this.upload.SaveAs( Path.Combine( Server.MapPath( "~/files" ), this.upload.FileName ) );
}

Az első meglepetés általában akkor éri az embert, amikor nagy fájlokat szeretne feltölteni, ennek ugyanis exception a következménye. A jelenség oka, hogy a feltöltött fájl POST-ként utazik a szerverig, a POST-olható adatok maximális mérete azonban korlátozott.

A következő meglepetés általában az, hogy ha valaki lassan (sokáig) tölt fel egy fájlt, például modemmel, akkor annak szintén kivétel a vége. Itt az a magyarázat, hogy egy kérés feldolgozási ideje szintén korlátozott, és a feltöltő ezt lépi túl. (Ennek az az értelme, hogy a problémás, például végtelen ciklusban futó válasz-generáló szálakat a rendszer kilövi.)

Mindkét limit állítható az asp.net runtime átparaméterezésével. Erre például a web.config-ban van lehetőség:

<system.web>
    ...
        
    <!--
        maxRequestLength : "feltoltheto" tartalom max merete kilobyteban
        executionTimeout : keres kiszolgalasanak max ideje masodpercben
    -->
    <httpRuntime maxRequestLength="1024000" executionTimeout="3600" />
</system.web>


Dávid Zoltán

Dávid Zoltán Mérnök Informatikusként végeztem a BME-n, jelenleg webfejlesztéssel és gépi tanulással foglalkozom.

2008.02.22. 8:38:38 | Permalink | Hozzászólások: 0 | Tárgyszavak:


  • Beépített mező és tartalomtípusok

    Balássy György (MS RD, ASP.NET MVP, MCTS) SharePoint programozása során gyakori feladat, hogy kódból kell hivatkoznunk egy adott mezőre vagy tartalomtípusra. Ha nyelvfüggetlen módon szeretnénk mindezt megtenni, akkor a mező vagy tartalomtípus neve helyett annak azonosítóját kell használnunk. Tovább »
  • Karlsruhe 2008

    Dávid Zoltán Kerékpár, kutatás, kastély, pihenés, ASP.NET Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások