ASP.NET中下载文件的方法

方法一:可能是最简单的、最短的方式:

Response.ContentType = "application/pdf";
 Response.AppendHeader("Content-Disposition", "attachment; filename=MyFile.pdf");
 Response.TransmitFile(Server.MapPath("~/Files/MyFile.pdf"));
 Response.End();

第一步是设置文档内容的类型,上面的例子是下载一个.PDF格式的文件。下面是最常用的一些文档内容类型:
 .htm, .html     Response.ContentType = "text/HTML";
 .txt    Response.ContentType = "text/plain";
 .doc, .rtf, .docx    Response.ContentType = "Application/msword";
 .xls, .xlsx    Response.ContentType = "Application/x-msexcel";
 .jpg, .jpeg    Response.ContentType = "image/jpeg";
 .gif    Response.ContentType =  "image/GIF";
 .pdf    Response.ContentType = "application/pdf";


方法二:解决.PDF文件较大时,可能导致所下载的PDF文件无法打开的方案

protected void Button1_Click(object sender, EventArgs e)  
    {  
        string path;  
        try  
        {  
            path = Request.PhysicalApplicationPath + "/" + Session["pdfpath"].ToString() + "/PDF/" + Session["mlmc"].ToString() + ".pdf";  
        }  
        catch (Exception)  
        {  
            return;  
        }  
        System.IO.Stream iStream = null;  
        byte[] buffer = new Byte[10000];  
        int length;  
        long dataToRead;  
        string filename = Session["mlmc"].ToString() + ".pdf";  
  
        try  
        {  
            iStream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);  
            dataToRead = iStream.Length;  
            Response.Clear();  
            Response.ClearHeaders();  
            Response.ClearContent();  
            Response.ContentType = "application/pdf"; //文件类型  
            Response.AddHeader("Content-Length", dataToRead.ToString());//添加文件长度,进而显示进度  
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));  
            while (dataToRead > 0)  
            {  
                if (Response.IsClientConnected)  
                {  
                    length = iStream.Read(buffer, 0, 10000);  
                    Response.OutputStream.Write(buffer, 0, length);  
                    Response.Flush();  
  
                    buffer = new Byte[10000];  
                    dataToRead = dataToRead - length;  
                }  
                else  
                {  
                    dataToRead = -1;  
                }  
            }  
              
        }  
        catch (Exception ex)  
        {  
            Response.Write("文件下载时出现错误!");  
        }  
        finally  
        {  
            if (iStream != null)  
            {  
                iStream.Close();  
            }  
            //结束响应,否则将导致网页内容被输出到文件,进而文件无法打开  
            Response.End();  
        }          
    }  

通过以上代码,可在浏览器中打开一个“打开/保存”对话框来下载并保存文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值