This article is currently in the process of being translated into Swedish (~99% done).
FileUpload control
Med ASP.NET blir filuppladdningar från användare extremt enkelt. Med FileUploadkontrollen kan det åstadkommans med bara några få rader kod som du kan se i det följande exemplet. Värt att notera är att det finns säkerhetsaspekter som man måste ta i beaktande när man accepterar filer från användare! Här är markupen som behövs:
<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>
Här är CodeBehind koden som krävs för att hantera uppladdningen:
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 är allting relativt enkelt. När UploadButton knappen klickas så kontrollerar vi om det har angetts en fil i uploadkontrollen. Om det finns en fil använder vi FileUploadkontrollens SaveAs-metod för att spara filen. Använder vårt projekts rotkatalog (vi använder MapPath-metoden för att få fram denna) samt filnamnsdelen av sökvägen som användaren angett. Om allt går bra notifierar vi användaren genom att sätta Text egenskapen på StatusLabel kontrollen - om inte så kommer ett Exception kastas och vi notifierar användaren om detta med.
Det här exemplet åstadkommer vad vi vill, men som du kan se är inget kontrollerat. Användaren kan ladda upp vilken typ av fil som helst och filstorleken är bara begränsad av serverns konfiguration. Ett mer robust exempel ser ut som följer:
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;
}
}
}
Här använder vi två egenskaper, ContentLength och ContentType för att göra några enkla kontroller av filen som användaren försöker ladda upp. Statusmeddelandena anger tydligt vad det handlar om och du kan justera dem för att passa dina behov.