TOC

This article has been localized into Danish by the community.

Kontroller:

FileUpload kontrollen

Med ASP.NET er det blevet let at tage imod filer fra brugerne - ved hjælp af FileUpload kontrollen kan det gøres med relativt få linjer kode, som du vil se i det følgende eksempel. Du skal dog være opmærksom på at der er visse sikkerhedsrisici når du tager imod filer fra brugerne! Her er den markup kode vi skal bruge til det første eksempel:

<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>

Og her er CodeBehind koden, der håndterer selve uploadet:

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;
        }
    }
}

Som du kan se, så er det hele rimeligt simpelt. Når der klikkes på UpoadButton, så checker vi om der er blevet valgt en fil i FileUpload kontrollen. Hvis det er tilfældet, så bruger vi kontrollens SaveAs metode til rent faktisk at gemme filen. Vi bruger projektets rod (den finder vi via MapPath metoden) samt navne-delen af den sti som brugeren har angivet. Hvis alt går som forventet, så fortæller vi brugeren det via Text egenskaben på vores StatusLabel kontrol - hvis ikke, så fanger vi den exception som bliver kastet og fortæller brugeren om det.

Dette eksempel kan klare opgaven med at tage imod en fil, men som du kan se, så laver vi ingen sikkerhedsmæssige checks. Brugeren kan i princippet uploade en hvilken som helst type af fil, hvis størrelse kun begrænses af server indstillingerne. Et lidt mere robust eksempel kunne derfor se således ud:

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;
        }
    }
}

Her bruger vi de to properties ContentLength og ContentType til at lave nogle basale check af det brugeren forsøger at uploade. Status beskederne bør indikere klart hvad problemet er, så dem kan du naturligvis ændre alt efter behov.


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!