我是一个新的bie,我希望文件在用户点击下载选项时下载,在浏览器中打开,而不是下载选项,如另存为/ open.Here我引用的相同和他们建议使用的每个地方
Response.AddHeader("Content-disposition", "attachment; filename=" + Name);
但我不知道在哪里以及如何使用。 实际上,我从查询中获取url值,返回url作为存储在arraylist中的bean的对象之一(此列表还有其他值与url)。 我在arraylist中的url值就像bean一样
type=.pdf
release date=12/3/08
name=hai.pdf
url=/files/en/soft/doc/docs/hai.pdf
我在我的控制器中得到这个数组列表
ArrayList details = dao.getdetails(Bean.getNumber());
并将此视图传递到视图中
Map.put("details", details);
modelView.setViewName("details_list");
modelView.addAllObjects(Map);
return modelView;
在jsp中,我迭代了这个数组列表并像这样显示内容
Type name Release Date
.txt hai.pdf May 21st 2012 Download
.txt hello.txt May 21st 2012 Download
下载我在jsp
中使用过这样的内容<td colspan="2" valign="top">
<a href="${details.Url}"/>
<img src="/images/download.gif" alt="Download" border="0" align="right"></a>
</td>
点击下载在浏览器中打开它。我需要下载它。 请帮助我如何使用或处理
response.setHeader("Content-Disposition", "attachment;");
在哪里为我的要求添加以上内容,或者如果我也可以使用任何java脚本。请帮我解决上述问题。
答案 0 :(得分:5)
这是一种方法:
doFilter()
方法中,设置内容下载的响应标头。 示例:
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String name = request.getAttribute("filename");
response.addHeader("Content-disposition", "attachment; filename=" + name);
chain.doFilter(request, response);
}
您可以从控制器类中将文件名设置为请求属性(reqest.setAttribute())
过滤器在Java Web堆栈中非常标准。
答案 1 :(得分:0)
这取决于浏览器响应的标题。
假设标题是image / png,那么浏览器会显示它。如果您使用application / octet-stream发送相同的图像,浏览器将强制下载它。
看看http://en.wikipedia.org/wiki/Byte_stream
在一个项目中,我发现从浏览器发送请求是不同的。
如果您从Firefox或IE上传图片,那么它会将它们上传为image / png,无论Chrome将其上传为application / octet-stream。
答案 2 :(得分:-1)
只是尝试添加标题
response.setHeader(“Content-Type:application / force-download”);