利用Java代码实现图片的下载:

来源:互联网 发布:软件订阅模式 编辑:程序博客网 时间:2024/06/05 14:35

导论

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();

}