ASP.NET 文件上传于下载
本文主要介绍一下,在APS.NET中文件的简单上传于下载,上传是将文件上传到服务器的指定目录下,下载是从存入数据库中的路径,从服务器上下载。
1.上传文件
(1)页面代码
1 <table align="center" cellpadding="0" cellspacing="0" width="100%"> 2 <tr> 3 <td align="right">文件名称:</td> 4 <td> 5 <asp:TextBox runat="server"></asp:TextBox> 6 </td> 7 <td></td> 8 </tr> 9 <tr> 10 <td align="right">浏览:</td> 11 <td> 12 <asp:FileUpload runat="server" /> 13 </td> 14 <td></td> 15 </tr> 16 <tr> 17 <td></td> 18 <td> 19 <asp:Button runat="server" Text="上传" 20 onclick="UploadButton_Click" /><asp:Label runat="server" ForeColor="#FF0000"></asp:Label> 21 </td> 22 <td></td> 23 </tr> 24 </table>
(2).后台代码
1 protected void UploadButton_Click(object sender, EventArgs e) 2 { 3 Msg.Text = ""; 4 MyWebSite.DAL.FileInfo file = new MyWebSite.DAL.FileInfo(); 5 if (string.IsNullOrEmpty(FileName.Text)) 6 { 7 Msg.Text = "请输入文件名"; 8 return; 9 } 10 if (FileUpload1.HasFile) 11 { 12 try 13 { 14 15 DateTime upload = DateTime.Now; 16 string flag = Path.GetExtension(FileUpload1.PostedFile.FileName); 17 string path = Server.MapPath("../Upload/" + FileUpload1.FileName); 18 string size = (FileUpload1.PostedFile.ContentLength / 1024).ToString(); 19 FileUpload1.SaveAs(path); 20 file.FileName = FileName.Text.ToString(); 21 file.Type = flag;//获得文件格式 22 file.Size = size;//文件大小 23 file.FilePath = path;//上传到服务器的绝对路径 24 file.UploadTime = DateTime.Now.ToShortDateString();//上传时间 25 handler.AddFile(file);//将上传的文件信息保存到数据库 26 Msg.Text = "上传成功!"; 27 } 28 catch 29 { 30 31 Msg.Text = "上传失败!"; 32 } 33 } 34 }
2.下载文件
(1)前台页面
<asp:Repeater runat="server" onitemcommand="down_file_Click"> <ItemTemplate> <table width="90%" align="center" cellpadding="1" cellspacing="0" bgcolor="#e1e1e1" class="title_font"> <tr> <td class="title_font" width="10%" align="center">文件名称:</td> <td width="20%"align="center"><b><asp:Label runat="server" Text='<%#Eval("文件名称") %>'></asp:Label></b></td> <td width="6%"align="center">类型:</td> <td width="6%"align="center"><%#Eval("类型") %></td> <td width="10%" align="center">文件大小:</td> <td width="8%"align="center"><%#Eval("文件大小") %>KB</td> <td width="10%"align="center">上传时间:</td> <td ><%#Eval("上传时间") %></td> <td width="10%" colspan="2" align="center"><asp:LinkButton CommandArgument='<%#Eval("link") %>' runat="server">下载文件</asp:LinkButton> </td> </tr> </table> <br /> </ItemTemplate> </asp:Repeater>
(2)后台代码
1).绑定数据
public void GrvDataBin(List<FileInfo> list) { DataView dv = new DataView(); DataTable dt = new DataTable("fileMeta"); { dt.Columns.Add("文件名称"); dt.Columns.Add("类型"); dt.Columns.Add("上传时间"); dt.Columns.Add("文件大小"); dt.Columns.Add("link"); } foreach (FileInfo fileM in list) { DataRow row = dt.NewRow(); row[0] = fileM.FileName; row[1] = fileM.Type; row[2] = fileM.UploadTime; row[3] = fileM.Size; row[4] = fileM.FilePath; dt.Rows.Add(row); } dv.Table = dt; Repeater1.DataSource = dv; Repeater1.DataBind(); }
2).下载文件
1 protected void down_file_Click(object sender, RepeaterCommandEventArgs e) 2 { 3 System.IO.FileStream fs = null; 4 try 5 { 6 string filePath = e.CommandArgument.ToString(); 7 string fileName = ((Label)e.Item.FindControl("FileTitle")).Text.ToString(); 8 fs = System.IO.File.OpenRead(filePath); 9 byte[] buffer = new byte[1024]; 10 long count = 1024; 11 Response.Buffer = true; 12 Response.AddHeader("Connection", "Keep-Alive"); 13 Response.ContentType = "application/octet-stream"; 14 Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(System.IO.Path.GetFileName(filePath)));//下载时要保存的默认文件名 15 Response.AddHeader("Content-Length", fs.Length.ToString()); 16 while (count == 1024) 17 { 18 count = fs.Read(buffer, 0, 1024); 19 Response.BinaryWrite(buffer); 20 } 21 22 } 23 catch (Exception ex) 24 { 25 return; 26 } 27 finally 28 { 29 fs.Close(); 30 } 31 }
- 上一篇 »挑战--asp.net 文件夹上传
- 下一篇 »ASP.NET限制上传文件类型的两种方法