servlet下载图片

Posted breezezqf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet下载图片相关的知识,希望对你有一定的参考价值。

比如这张diqiu.jpg是我们想下载的图片,路径如下图

 

技术分享图片

 

第一步

  index首页一个超链接,地址指向一个servlet的虚拟路径,然后附带一个参数

  

<a href="/WEB_servlet/download?filename=diqiu.jpg">下载地球.jpg</a>

  

第二部

  新建一个下载的servlet

  

 1 package com.zqf.one;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletOutputStream;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 public class Download extends HttpServlet {
14 
15     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16         //获得下载文件的名称
17         String filename = request.getParameter("filename");    
18         System.out.println(filename);
19         //下载文件类型,客户端通过文件的MIME类型区分
20         response.setContentType(this.getServletContext().getMimeType(filename));
21         //告诉客户端该文件不是直接解析,而是以附件打开(下载)
22         response.setHeader("Content-Disposition", "attachment;filename="+filename);
23         //获得文件绝对路径
24         String realPath = this.getServletContext().getRealPath("download/"+filename);
25         //获得文件输入流
26         InputStream in=new FileInputStream(realPath);
27         //通过response获得的输出流,用于像客户端些内容
28         ServletOutputStream out=response.getOutputStream();
29         //文件拷贝的模板代码
30         int len=0;
31         byte[]  b=new byte[1024];
32         while((len=in.read(b))>0) {
33             out.write(b,0,len);
34         }
35         in.close();
36         out.close();
37     }
38 
39     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40         doGet(request, response);
41     }
42 }

 

以上是关于servlet下载图片的主要内容,如果未能解决你的问题,请参考以下文章

Servlet中文图片下载--学习笔记

JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

图片文件下载

小程序各种功能代码片段整理---持续更新

图片预加载

服务端通知浏览器以下载的方式打开图片