This article is currently in the process of being translated into Hungarian (~98% done).
FileUpload control
A fájlok feltöltése ASP.NET-ben rendkívül egyszerűen megoldható. A FileUpload kontroll segítségével és igen kevés kód beírásával dolgozhatunk, ahogy ezt a következő minta is mutatja. Figyelem! A felhasználók által feltöltött adatok/fájlok biztonsági problémákat okozhatnak! Következzenek a kódok:
<form id="form1" runat="server">
<asp:FileUpload id="FileUploadControl" runat="server" />
<asp:Button runat="server" id="UploadButton" text="Upload" onclick="UploadButton_Click" />
<br /><br />
<asp:Label runat="server" id="StatusLabel" text="Upload status: " />
</form>
És itt a kódrészlet, mely a CodeBehind részben lekezeli a feltöltési folyamatot:
protected void UploadButton_Click(object sender, EventArgs e)
{
if(FileUploadControl.HasFile)
{
try
{
string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
StatusLabel.Text = "Upload status: File uploaded!";
}
catch(Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
Látható mennyire egyszerű! Az UploadButton-ra kattintva leellenőrizzük, van kijelölt fájl? Ha igen, a FileUpload kontroll SaveAs metódusát használva elmentjük a fájlt. A példában a saját projektünk gyökérmappájába (ehhez a MapPath metódust használva), de bármelyik lehet, azzal a névvel, amit a felhasználónk megadott. Ha minden rendben, egy üzenettel jelezzük a StatusLabel Text elemében, ha mégsem, akkor a hibaüzenetet írjuk ki a felhasználónak.
A fenti példa tökéletesen működik, de ahogy látható, semmit sem ellenőrzünk! A felhasználónk fel tud tölteni bármilyen fájl, bármekkora méretben, amit csak a szerver kapacitása korlátoz. Egy kicsit bonyolultabb példa a következőként nézhetne ki:
protected void UploadButton_Click(object sender, EventArgs e)
{
if(FileUploadControl.HasFile)
{
try
{
if(FileUploadControl.PostedFile.ContentType == "image/jpeg")
{
if(FileUploadControl.PostedFile.ContentLength < 102400)
{
string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
StatusLabel.Text = "Upload status: File uploaded!";
}
else
StatusLabel.Text = "Upload status: The file has to be less than 100 kb!";
}
else
StatusLabel.Text = "Upload status: Only JPEG files are accepted!";
}
catch(Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
Két tulajdonságot fogunk felhasználni, ezek a ContentLenght és a ContentType, melyek alapvető ellenőrzéseket végeznek a feltölteni kívánt fájlon. A hibaüzenetek pontosan jelzik mi történik és mi a teendő, ha nem sikerült a művelet.