美文网首页
Servlet之response对象实现图片下载

Servlet之response对象实现图片下载

作者: 付戈 | 来源:发表于2017-01-07 17:48 被阅读0次

开场白:刚考完了试,全校上下,人人皆各奔东西,一时间突然静悄悄的,偌大的广交,唯有几个帅气的IT男仍在寝室里兢兢业业的敲代码。

闲的无聊,闷得慌,于是就复习起Servlet的知识,才发现,response实现图片下载是辣么简单的。

源码+分析

package response;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* @author 国富小哥

*/

@WebServlet("/ServletDownloadFile")

public class ServletDownloadFile extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public ServletDownloadFile() {

super();

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

*      response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 获取ServletContext对象

ServletContext context = this.getServletContext();

// 获取当前目录的图片路径

String path = context.getRealPath("/download/buty.jpg");

// 截取图片文件名

String fileName = path.substring(path.lastIndexOf("\\") + 1);

System.out.println("filename=" + fileName);

// 通知浏览器执行下载操作

response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

/**

* 注意: 如果图片名称是中文需要设置转码 response.setHeader("content-disposition",

* "attachment;fileName="+URLEncoder.encode(fileName, "UTF-8"));

*/

// 读取文件的字节输入流

InputStream in = null;

// 写入浏览器的字节输出流

OutputStream out = null;

try {

in = new FileInputStream(path);

int len = 0;

// 字节缓冲区

byte[] buffer = new byte[1024];

out = response.getOutputStream();

// 把图片文件读入缓冲区

while ((len = in.read(buffer)) > 0) {

// 把缓冲区里的文件中写到浏览器

out.write(buffer, 0, len);

}

} finally {

if (in != null) {

try {

in.close();

} catch (Exception e) {

}

}

if (out != null) {

try {

out.close();

} catch (Exception e) {

}

}

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

*      response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

相关文章

网友评论

      本文标题:Servlet之response对象实现图片下载

      本文链接:https://www.haomeiwen.com/subject/brmfbttx.html