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>