导论:
javaWeb下载文件一般分为两类,其中一类例如.txt,.Excel,.zip等浏览器可以识别的文件类型,可以利用<a><a/>标签的链接实现,但是图片的下载确比较麻烦,当使用链接时,浏览器不识别图片的类型会将图片打开而不是下载。实现该功能比较常见的有利用jsp下载,利用servlet下载,利用纯java代码下载。本文介绍以java代码来实现。
利用Java代码实现图片的下载:
现在的企业级中大型项目一般都是利用Ajax来实现与后台代码的交互的,但是ajax接收二进制流比较麻烦,一般用来获取图片地址。本人认为使用form表单来做请求比较简单。
jsp部分:
<iframe id="downIframe"name="downIframe" style="display:none"></iframe>
<from id="downFrom"target="downIframe"action="此处为访问的URL">
<input type="hidden" name="pictureUrl" value="此处为系统图片路径"/>
</from>
注:当我们单独使用form表单来实现时,方法会选择跳转到另一个页面中,当没有提供跳转的目的页面的时候,会跳转到一个空白页面,然后我们会想着给那个页面提供个背景图片,然后显示下载成功四个大字,哈哈。。这个有点太入门了。so here使用iframe来作为form表单的目的,单独刷新iframe区域,因为iframe仅仅存在在代码中在页面中看不到,所以不会影响。接下来就是java部分。
public void downPicture(HttpServletRequest request,HttpServletResponse response){
String url = request.getParameter("pictureUrl");
//获取文件
File file = new File(url);
//将图片读成二进制流
FileImageInputStream fs = new FileImageInputStream (file);
int streamLength = (int)fs.length();
byte[] image = new byte[streamLength ];
fs.read(image,0,streamLength );
fs.close();
response.serHeader("Content-Type","application/octet-stream");
response.serHeader("Content-Disposition","attachment;filename=图片名字.图片类型后缀");
response.getOutStream().write(image );
response.getOurStream.flush();
response.getOurStream.close();
}
新闻热点
疑难解答