您的位置:首页 > 编程语言 > ASP

ASP.NET 文件上传于下载

2013-07-12 09:28 323 查看
  本文主要介绍一下,在APS.NET中文件的简单上传于下载,上传是将文件上传到服务器的指定目录下,下载是从存入数据库中的路径,从服务器上下载。

  1.上传文件

  (1)页面代码

<tablealign="center"cellpadding="0"cellspacing="0"width="100%">
<tr>
<tdalign="right">文件名称:</td>
<td>
<asp:TextBoxID="FileName"runat="server"></asp:TextBox>
</td>
<td></td>
</tr>
<tr>
<tdalign="right">浏览:</td>
<td>
<asp:FileUploadID="FileUpload1"runat="server"/>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td>
<asp:ButtonID="UploadButton"runat="server"Text="上传"
onclick="UploadButton_Click"/><asp:LabelID="Msg"runat="server"ForeColor="#FF0000"></asp:Label>
</td>
<td></td>
</tr>
</table>


  (2).后台代码  

protectedvoidUploadButton_Click(objectsender,EventArgse)
{
Msg.Text="";
MyWebSite.DAL.FileInfofile=newMyWebSite.DAL.FileInfo();
if(string.IsNullOrEmpty(FileName.Text))
{
Msg.Text="请输入文件名";
return;
}
if(FileUpload1.HasFile)
{
try
{

DateTimeupload=DateTime.Now;
stringflag=Path.GetExtension(FileUpload1.PostedFile.FileName);
stringpath=Server.MapPath("../Upload/"+FileUpload1.FileName);
stringsize=(FileUpload1.PostedFile.ContentLength/1024).ToString();
FileUpload1.SaveAs(path);
file.FileName=FileName.Text.ToString();
file.Type=flag;//获得文件格式
file.Size=size;//文件大小
file.FilePath=path;//上传到服务器的绝对路径
file.UploadTime=DateTime.Now.ToShortDateString();//上传时间
handler.AddFile(file);//将上传的文件信息保存到数据库
Msg.Text="上传成功!";
}
catch
{

Msg.Text="上传失败!";
}
}
}


  2.下载文件

  (1)前台页面

<asp:RepeaterID="Repeater1"runat="server"onitemcommand="down_file_Click">
<ItemTemplate>
<tablewidth="90%"align="center"border="1"cellpadding="1"cellspacing="0"bgcolor="#e1e1e1"class="title_font">
<tr>
<tdclass="title_font"width="10%"align="center">文件名称:</td>
<tdwidth="20%"align="center"><b><asp:LabelID="FileTitle"runat="server"Text='<%#Eval("文件名称")%>'></asp:Label></b></td>
<tdwidth="6%"align="center">类型:</td>
<tdwidth="6%"align="center"><%#Eval("类型")%></td>
<tdwidth="10%"align="center">文件大小:</td>
<tdwidth="8%"align="center"><%#Eval("文件大小")%>KB</td>
<tdwidth="10%"align="center">上传时间:</td>
<td><%#Eval("上传时间")%></td>
<tdwidth="10%"colspan="2"align="center"><asp:LinkButtonID="LinkButton1"CommandArgument='<%#Eval("link")%>'runat="server">下载文件</asp:LinkButton>
</td>
</tr>
</table>
<br/>
</ItemTemplate>
</asp:Repeater>


  (2)后台代码

  1).绑定数据

publicvoidGrvDataBin(List<FileInfo>list)
{

DataViewdv=newDataView();
DataTabledt=newDataTable("fileMeta");
{
dt.Columns.Add("文件名称");
dt.Columns.Add("类型");
dt.Columns.Add("上传时间");
dt.Columns.Add("文件大小");
dt.Columns.Add("link");
}
foreach(FileInfofileMinlist)
{
DataRowrow=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).下载文件

  

protectedvoiddown_file_Click(objectsender,RepeaterCommandEventArgse)
{
System.IO.FileStreamfs=null;
try
{
stringfilePath=e.CommandArgument.ToString();
stringfileName=((Label)e.Item.FindControl("FileTitle")).Text.ToString();
fs=System.IO.File.OpenRead(filePath);
byte[]buffer=newbyte[1024];
longcount=1024;
Response.Buffer=true;
Response.AddHeader("Connection","Keep-Alive");
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachment;filename="+Server.UrlEncode(System.IO.Path.GetFileName(filePath)));//下载时要保存的默认文件名
Response.AddHeader("Content-Length",fs.Length.ToString());
while(count==1024)
{
count=fs.Read(buffer,0,1024);
Response.BinaryWrite(buffer);
}

}
catch(Exceptionex)
{
return;
}
finally
{
fs.Close();
}
}


  以上就完成了,简单的文件上传与下载。 


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: