直接让客户端浏览器下载已知类型(*.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 通过"流"下载文件时显示中文文件名
分享到:
相关推荐
取消支持浏览器内直接打开文档,而非调用对用程序打开的脚本
如何在浏览器中打开pdf 如何在浏览器中打开pdf 如何在浏览器中打开pdf 如何在浏览器中打开pdf
PDF浏览器,有了它你可以轻松观看PDF格式的文本 下载后打开浏览器直接关联相关格式。 PDF格式
我测试过很多遍,想要通过a标签的形式来直接点击url下载文件并重命名但是都失败了,最终只能下载却不能重命名 所以 换了java后台来修改名字.以下代码 我做的网页是点击文件直接下载 直接下载下来了,一开始的文件名...
如果是图片、视频、txt等格式的会直接预览文件,而不是像docx、xlsx一样直接下载,项目中为了功能明确,将预览单独加了一个查看按钮,下载按钮要实现无论什么文件格式都直接下载。 有两种方式处理: 一.后台接口...
浏览器直接浏览wap网页插件 reg文件 写入注册表后 就可在普通浏览器中直接打开wap站点~
解决方法:找到谷歌浏览器安装根目录Google,然后依次打开Chrome和Application文件夹,看一下里面是否有“chrome.exe”文件,确定有该文件以后,复制该文件的路径(路径中不包含该文件的文件名,例如“C:\Program ...
这个资源是一个使用Java编写的工具,可以根据提供的网址列表,自动在浏览器中批量打开并访问这些网址。通过简单的代码实现,该工具可以帮助用户快速打开大量网页,提高工作效率和浏览体验。 适用人群: 这个资源...
PP浏览器覆盖了IOS移动操作系统,适用于iPhone/iPad/iTouch手机,是首款提供下载音视频功能,首创播放器离线观看,集下载与解压常用几十种压缩包直接预览,超级解压,使浏览器不仅仅是浏览器更成为下载资源管理必备...
chrome等浏览器由于安全机制,采用了文件索引的方式,不允许直接操作本地文件。 功能介绍 通过链接可以访问本地目录、共享目录、本地文件、共享文件(支持所有浏览器) 优化点 1、支持中文路径 2、支持文件夹...
需求是在浏览器中点击某个按钮,打开本地的某个exe文件。上传代码直接修改reg中的路径(里面包含所有行的说明信息),执行reg之后,打开代码中的网页,点击即可测试使用。
把一个已知类型的文件发送到客户端,直接提示让浏览者下载,而不是用与它相关联的程序打开1.在下载文件是,如图片文件,文本文件,HTML文件或Word文件等,浏览器会自动调用相关程序直接打开要下载的文件,从而达不到...
某些类型文件,例如rar/cab/apk/mp3/xls/chm等文件,在服务器放置后;用IE浏览器不能下载,而是直接打开,显示乱码。 本文介绍此问题的解决方法。
80行代码的简单Chrome扩展程序,其中添加了一个按钮(一个),用于下载和打开当前查看Github文件。屏幕截图安装您可以从安装此扩展程序。想法或问题创建一个问题并对其进行描述。 我将尽快检查!贡献您可以分叉存储...
2. 提高用户体验:通过将常用的应用程序集成到网页中,用户可以方便地在浏览器中直接打开所需的应用程序,无需繁琐的寻找和启动过程,提高了用户的使用体验。 3. 跨平台兼容性:由于该功能是基于浏览器实现的,因此...
一个关于C#文件浏览器的小程序 无需修改,可以直接打开、查看、运行的程序
UC浏览器备cmnet、cmwap等联网方式,速度快而稳定,具有视频播放、网站导航、搜索、下载、个人数据管理等功能。
有的浏览器安装了pdf打开程序关联到浏览器,所以直接写上pdf路径时是打开pdf而不是下载,下面我就说下如果让他们只是下载,而不是浏览。创建一个php文件复制代码 代码如下:<?php$file = $_GET[‘file’];$arr = ...
J2EE_API_HTML格式_即一个个HTML文件,通过任意浏览器直接打开。
java 配置文件 等地方需要 把汉字转换成 unicode 编码 这个工具 可以直接用浏览器打开方便绿色 输入 汉字就能完成转换 方便快捷 比 jdk自带的转换工具方便多了