0

ASP.NET 2.0 C# Filuppladdning

Filuppladdning
ASP.NET 2.0
Visual C#

Var osäker på om jag skulle göra ett script eller artikel om den nya filuppladningskomponenten i ASP.NET 2.0. Det fick bli en artikel. I och med ASP.NET 2.0 som förde med sig många nya kontroller så var filuppladdningen en av dem. Ett verktyg att göra det enkelt för en gångs skull att göra ett uppladdningsscript. I princip bara att dra från toolboxen i Visual Web Developer eller Visual Basic 2005, men det är lite mer än så och jag ska gå igenom här hur du snabbt får en fungerande filuppladdare.

Till att börja med dra ut "FileUpload control" från toolboxen i Visual Web Developer (VWD). Har du inte VWD så är det ide att ladda hem det nu från http://www.asp.net ett program som hjälper dig väldigt mycket med utvecklandet. Du kommer även kunna göra denna filuppladdningskontroll utan VWD.

Om du kolla nu i Source View (källkoden) kommer du se att denna bit kod kommigt dit:

Kod:

<asp:FileUpLoad id="FileUpLoad1" runat="server" />

Detta är själva kontrollen, men utan lite mer kod och grejjer är den rätt värdelös. Så dra in en knapp också:

Kod:

<asp:Button id="UploadBtn" Text="Ladda Upp!" OnClick="UploadBtn_Click" runat="server" />

Denna fungerar som en helt vanlig submit knapp. Dra även ut en Label, där vi ska visa när uppladdningen är klar och vad filnamnet är.

Kod:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

Nu har vi allting designmässigt för att kunna ladda upp filer på servern. Dags att koda lite på riktigt! Öppna Default.aspx.cs eller Upload.aspx.cs beroende på vad du döpt din sida till såklart. Eller så går du helt enkelt ut i design view och dubbelklickar på "Ladda Upp" knappen. Här inne ligger C# koden som kommer att göra magi. När du dubbelklickade på knappen så skrevs denna bit kod in:

Kod:

protected void UploadBtn_Click(object sender, EventArgs e)
  {

  }

Denna koden aktiveras vid klick på UploadBtn som jag valde att kalla knappen. Altså när vi klickar på knappen kommer all kod mellan { och } läsas in. Vad ska vi nu skriva mellan { och }? Vi ska skriva in:

Kod:


if (FileUpLoad1.HasFile)
{

FileUpLoad1.SaveAs(@"C:\uploaded\" + FileUpLoad1.FileName);
Label1.Text = "Fil Uppladdad: " + FileUpLoad1.FileName ;
}
else
{
Label1.Text = "Uppladdningen Misslyckades.";
}

Har du programmerat tidigare så ser du säkert logiken i denna bit kod direkt, hoppas jag.
Kod:

if (FileUpLoad1.HasFile)

säger som att har man valt en fil att ladda upp då
Kod:


FileUpLoad1.SaveAs(@"C:\uploaded\" + FileUpLoad1.FileName);
Label1.Text = "Fil Uppladdad: " + FileUpLoad1.FileName ;

Sparas filen på servern, eller i detta fall i mappen "Uploaded" på C men ni fattar. Label1.Text anger att det ska skrivas ut en text i den Label vi drog ut på sidan texten som ska skrivas ut = Fil uppladdad och filnamnet. Men om det blir fel eller man aldrig valde en fil så skrivs "Uppladdningen Misslyckades" ut istället på sidan.

Så har du gjort rätt nu ska koden se ut såhär:

Kod:

protected void UploadBtn_Click(object sender, EventArgs e)
{
if (FileUpLoad1.HasFile)
{

FileUpLoad1.SaveAs(@"C:\uploaded\" + FileUpLoad1.FileName);
Label1.Text = "Fil Uppladdad: " + FileUpLoad1.FileName ;
}
else
{
Label1.Text = "Uppladdningen Misslyckades.";
}
}

Nu har du ett helt fungerande filuppladdningsscript … Eller nästan. För tänk om du vill att man t.ex bara ska kunna ladda upp bilder, säg gif och jpg bilder, hur gör man det? Ta de lugnt, det är lika enkelt. Du kan göra en validator, som validerar vad det är du ska ladda upp, en sådan kan se ut exempelvis som den här:

Kod:


<asp:RegularExpressionValidator id="FileUpLoadValidator" runat="server" ErrorMessage="Bara .jpg och .gif tillåtna!" ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF)$" ControlToValidate="FileUpload1">
</asp:RegularExpressionValidator>

Oj oj oj, nu blev det mycket, eller? Nej det är som sagt logiskt och simpelt, det första anger kontrollen, ErrorMessage anger just felmeddelande, sen ValidationExpression det är här du säger vad som ska tillåtas och inte tillåtas. Till sist, sluttaggen. Koden ser nu ut såhär i default.aspx eller vad du kallar den:

Kod:


<body>
  <form id="form1" runat="server">
  <div>
  <asp:FileUpLoad id="FileUpLoad1" runat="server" />
  <asp:RegularExpressionValidator id="FileUpLoadValidator" runat="server" ErrorMessage="Bara .jpg och .gif tillåtna!" ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF)$" ControlToValidate="FileUpload1">
</asp:RegularExpressionValidator>
  <br />
  <asp:Button id="UploadBtn" Text="Ladda Upp!" OnClick="UploadBtn_Click" runat="server" Width="105px" />
  <br />
  <br />
  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
  </form>
</body>

Nu har du ett helt fungerande uppladdningsscript med validering. Hoppas att du har lärt dig hur denna kontroll fungerar och hittar du fel med mera så bara släng iväg ett PM eller maila till webmaster@roosweb.se

Lycka till!
Mvh Roosweb

Share on FacebookTweet about this on TwitterShare on Google+Share on RedditShare on TumblrEmail this to someone