Ladda upp filer med ASP.NET

I vanlig klassisk ASP så finns det ingen inbyggd hantering av filuppladdningar utan man måste använda en tredjeparts-komponent som t.ex. ASPUpload. I ASP.NET så finns det inbyggd funktionalitet för detta. Man kan t.ex. använda sig av FileUpload som är en färdig inbyggd serverkontroll.

Koden ser ut som följer nedan för en simpel uppladdningsfunktion. Tänk dock på att inte använda koden nedan rakt av, utan att ha med någon form av kontroll på vad för filer som får laddas upp. Annars kommer du utsätta din hemsida för ett väldigt allvarligt säkerhetshål.

<%@ Page Language="C#" %>

<script runat="server">
    protected void Do_Upload(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
            try
            {
                FileUpload1.SaveAs( Server.MapPath("uploads/" + FileUpload1.FileName) );
		Response.Write("Uppladdning klar: " + FileUpload1.PostedFile.FileName);
            }
            catch (Exception ex)
            {
                Response.Write("FEL: " + ex.Message.ToString());
            }
        else
        {
            Response.Write("Du angav ingen fil.");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Upload Files</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button runat="server" OnClick="Do_Upload" Text="Upload File" />
    </form>
</body>
</html>

Utöver att enbart lägga in koden ovan så måste du även skapa en mapp som heter t.ex. “uploads” och referera korrekt till denna i anropet till Server.MapPath(). Annars kommer inte uppladdningen att fungera korrekt.

Om du gjort rätt så kommer din uppladdnings-sida att se ut ungefär som nedan, dvs enbart en enkel filväljare och en knapp för att ladda upp filen. När du sedan laddar upp en fil så kommer du få veta vilket namn den är sparad med.


aspnet_upload_form.png

Was this article helpful?

Related Articles