TOC

This article is currently in the process of being translated into Hungarian (~98% done).

Controls:

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.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!