如何在IE 9及以上版本的jsp中使用html/javascript强制下载
How do I force download with html/javascript in a jsp from IE 9 and above?
我有一个到img 的链接
<a href="relative_Path_of_IMG">Save</a>
我需要这个链接直接下载这个文件。在Chrome和Firefox上,属性"下载"运行良好
<a href="relative_Path_of_IMG" download>Save</a>
但是在ie上这不太好用。我在互联网上找到了JS命令窗口.dococument.execCommand,我试图用这种方式使用
window.document.execCommand('SaveAs', true, fileName || fileURL)
但这种方式打开一个窗口,让用户选择一个文件夹保存,我需要在用户下载的默认文件夹上自动执行下载,就像Chrome和Firefox上的属性下载一样。
感谢
Paulo Filipe
您可以创建一个JSP并将其用作servlet。它会收到一个带有你想要下载的图片url的参数链接。
这个servlet将打开一个流来读取文件,并打开另一个流在浏览器上写入输出。这样,您的浏览器将负责处理您的文件。
以这个JSP为例。
<%@ page language="java" contentType="image/jpeg; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String urlPrefix = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
String fileUrl = request.getParameter("fileUrl");
if (fileUrl == null || "".equals(fileUrl.trim())) {
throw new Exception("No image Found.");
}
String fileName = fileUrl.substring(fileUrl.lastIndexOf("/")+1);
response.setContentType("image/jpeg");
response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(fileName, "UTF-8"));
String fullEncodedUrl = urlPrefix + URIUtil.encodePath(fileUrl);
URL url = new URL(fullEncodedUrl);
URLConnection connection = url.openConnection();
InputStream stream = connection.getInputStream();
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
int len;
byte[] buf = new byte[1024];
while ((len = stream.read(buf)) > 0) {
outs.write(buf, 0, len);
}
outs.close();
%>
用户应该可以选择保存文件的位置。这是唯一公平的,因为下载是在他们的机器上。
在Chrome和Firefox中,有一个设置选项(在Firefox中)默认为始终将文件保存到下载文件夹。用户通过不更改该设置选择始终保存到同一文件夹。他们可以很容易地更改到下一个设置,说"总是问我在哪里保存文件。"但他们选择,而不是网站。如果Microsoft有类似的选项,用户可以选择,但您(即任何服务器端代码)不能。
相关文章:
- 来自文本输入null的html javascript变量
- Html/Javascript-如何屏蔽除英国以外的所有欧盟国家,并允许所有非欧盟国家
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- HTML/Javascript表单会自动重置
- html/javascript中的可拖动文本
- 在HTML/JavaScript中减去两个数字
- 基本的HTML Javascript程序.这是怎么回事
- 一个html/javascript'小工具'知道用户何时单击了小部件外的任意位置
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- 在HTML/Javascript文件中获取App Inventor 2变量值
- HTML/JavaScript表格标题
- 如何修复在浏览器中打开后出现在屏幕上的html/Javascript代码
- 在HTML JavaScript头部分运行Google脚本函数
- 如何在 html/javaScript/Jquery 中“浏览文件夹”
- 带有消息html/javascript的进度条
- 在html/javascript中请求撤消/重做事件
- 使用HTML/Javascript表单使用ActiveXObject创建带有嵌入图像的outlook电子邮件
- 使用html/javascript启动小部件
- 移动html/javascript编程中的变量传递