欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 前端技术 > html >内容正文

html

直接让浏览器下载文件而不打开 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 html 26 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 直接让浏览器下载文件而不打开 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘python工程师标准>>>

直接让客户端浏览器下载已知类型(*.doc)的文件  ,而不使用关联程序打开。
   
    web开发人员都有过这样的疑问,如何让一个文件,尤其是一个已知类型的文件(*.doc),发送到客户端,直接提示让浏览者下载,而不是用与它相关联的程序打开。

    以前我们最常用的办法就是把这样的文件加到链接上,这样可以让浏览者通过点击鼠标右键的目标另存为来下载所链接的文件。但是,这样有两个不足的地方:  
    一是:如果浏览器能够识别已下载文件的扩展名,则浏览器就会激活该扩展名所关联的程序来打开所下载的文件。比如:在windows平台上,如果用户点击的链接链接的是一个“.doc”文件的话,那么,浏览器就会启动microsoft   word应用程序来打开它。  
    二是:如果采用链接的办法的话,任何能看到该链接的人都可以下载该文件,你虽然也可以对所下载的文件进行权限设置,但那样做也不是很方便的。有时候我们需要更为灵活和富有弹性的方式,下面的程序能够很方便地克服以上两方面的不足。  
    这种办法是可靠的,但你必须记住:没有授权的用户不能够通过在浏览器地址栏里输入文件的url来取得该文件的下载权。所以,要下载的文件应该放到虚拟目录之外的一个目录里,比如:如果你的虚拟目录是c:\mengxianhui\tomcat4\website\myapp的话,那么,存放在该目录和该目录下的任何子目录下所有文件对因特网上的任何用户都是可见的。

    要直接下载一个文件,我们需要做两件事,

   第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关。

   第二件事是:设置http的响应头名字为:content-disposition,设定值为:attachment;   filename   =   thefilename。这里的thefilename就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。

 

下面,我们就平常最常用的jsp和asp页面来举一个实际应用的例子。  
     
      download.jsp页面的例子:

<% // 得到文件名字和路径 string filename = "mengxianhuidoctest.doc"; string filepath = "d:\\"; // 设置响应头和下载保存的文件名 response.setcontenttype("application/octet-stream"); response.setheader("content-disposition", "attachment; filename=\"" filename "\""); // 打开指定文件的流信息 java.io.fileinputstream fileinputstream = new java.io.fileinputstream(filepath filename); // 写出流信息 int i; while ((i=fileinputstream.read()) != -1) { out.write(i); } fileinputstream.close(); out.close(); %>  

下载时被显示的文件名包含中文时,要编码
string filename=new string("手册.pdf".getbytes("gbk"),"8859_1");

 

如果使用了struts 2,可以参看:

struts2 通过"流"下载文件时显示中文文件名

 

转载于:https://my.oschina.net/pangzhuzhu/blog/317952

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的直接让浏览器下载文件而不打开的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

网站地图