文件下载问题

直接使用超链接的方式进行文件下载,会出现如同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();

            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值