本文共 1474 字,大约阅读时间需要 4 分钟。
直接使用超链接的方式进行文件下载,会出现如同txt,以及一些图片格式的文件不能直接下载,而是在浏览器中直接打开,那么如果想将所有格式的文件进行下载的话,如下所示:
前台代码:
<asp:Repeater ID="rptFile" runat="server" OnItemCommand="rptFile_ItemCommand">
<HeaderTemplate> <table cellpadding="0" cellspacing="0"> </HeaderTemplate> <ItemTemplate> <tr> <td height="25"> <%#Eval("AttaNames")%> <asp:LinkButton ID="LinkButton1" runat="server" CommandName="download" CommandArgument='<%# Eval("AttaNames") %>' class="delete">下载</asp:LinkButton> <%-- <a href='../UploadFile/<%#Eval("AttaNames")%>'>下载</a>--%> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater>此代码中不能出现 <%-- <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>--%>另外必须有 <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>后台代码:
protected void rptFile_ItemCommand(object source, RepeaterCommandEventArgs e)
{string AttaName = e.CommandArgument.ToString();
if (e.CommandName == "download") { string fileName = AttaName;//客户端保存的文件名 string filePath = Server.MapPath("../UploadFile/Project/" + AttaName);//路径//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.ContentType = "application/octet-stream"; //通知浏览器下载文件而不是打开 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bytes); Response.Flush(); Response.End();}
}
转载地址:http://wgnei.baihongyu.com/