根据已知文件路径,怎么让浏览器下载?

时间:2021-04-09 16:46:34
ajax调用一个后台方法,该后台方法是:生成一个pdf,然后返回这个pdf的路径(例如:http://222.22.22.2/a.pdf),
ajax得到这个pdf的路径后怎么让浏览器下载?
现在的写法是:window.open(pdfUrl);然后浏览器会直接打开这个文件,
请教如何让其下载?

8 个解决方案

#1


 string path = Server.MapPath(你的PDF路径);
        FileInfo fi = new FileInfo(path);
        if (fi.Exists)
        {
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = true;
            Response.AddHeader("Content-Length", fi.Length.ToString());
            Response.ContentType = "application/application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fi.Name));
            Response.WriteFile(fi.FullName);
            Response.End();
            Response.Flush();
            Response.Clear();
        }

#2


 string FileName = ".pdf";  
               FullFileName = Server.MapPath(FileName);  
               FileInfo DownloadFile = new FileInfo(FullFileName);  
               if (DownloadFile.Exists)  
               {  
                   Response.Clear();  
                   Response.ClearHeaders();  
                   Response.Buffer = false;  
                   Response.ContentType = "application/octet-stream";  
                   Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.ASCII));  
                   Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());  
                   Response.WriteFile(DownloadFile.FullName);  
                   Response.Flush();  
                   Response.End();  
               }  

#3


楼上正解00000

#4


先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

#5


引用 4 楼 ZZtiWater 的回复:
先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

#6


引用 5 楼 zj25810 的回复:
Quote: 引用 4 楼 ZZtiWater 的回复:

先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

会直接打开,现在的浏览器都支持pdf的浏览了,还能进行相关的操作

#7


引用 6 楼 ZZtiWater 的回复:
Quote: 引用 5 楼 zj25810 的回复:

Quote: 引用 4 楼 ZZtiWater 的回复:

先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

会直接打开,现在的浏览器都支持pdf的浏览了,还能进行相关的操作

要改ContentType,告诉浏览器用下载而不用预览

#8


算了,我还是用服务器的方式吧!

#1


 string path = Server.MapPath(你的PDF路径);
        FileInfo fi = new FileInfo(path);
        if (fi.Exists)
        {
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = true;
            Response.AddHeader("Content-Length", fi.Length.ToString());
            Response.ContentType = "application/application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fi.Name));
            Response.WriteFile(fi.FullName);
            Response.End();
            Response.Flush();
            Response.Clear();
        }

#2


 string FileName = ".pdf";  
               FullFileName = Server.MapPath(FileName);  
               FileInfo DownloadFile = new FileInfo(FullFileName);  
               if (DownloadFile.Exists)  
               {  
                   Response.Clear();  
                   Response.ClearHeaders();  
                   Response.Buffer = false;  
                   Response.ContentType = "application/octet-stream";  
                   Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.ASCII));  
                   Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());  
                   Response.WriteFile(DownloadFile.FullName);  
                   Response.Flush();  
                   Response.End();  
               }  

#3


楼上正解00000

#4


先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

#5


引用 4 楼 ZZtiWater 的回复:
先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

#6


引用 5 楼 zj25810 的回复:
Quote: 引用 4 楼 ZZtiWater 的回复:

先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

会直接打开,现在的浏览器都支持pdf的浏览了,还能进行相关的操作

#7


引用 6 楼 ZZtiWater 的回复:
Quote: 引用 5 楼 zj25810 的回复:

Quote: 引用 4 楼 ZZtiWater 的回复:

先谢谢楼上的两位,我问的是在前台有没有办法实现!
再说,[WebMethod]貌似不能使用你们说的这种方式。

你试一下直接在浏览器地址栏输入http://222.22.22.2/a.pdf会不会提醒你下载 根据已知文件路径,怎么让浏览器下载?

会直接打开,现在的浏览器都支持pdf的浏览了,还能进行相关的操作

要改ContentType,告诉浏览器用下载而不用预览

#8


算了,我还是用服务器的方式吧!