在浏览器中通过response.setHeader实现图片显示和文件下载

图片显示

response.setHeader("Content-type" , "jpeg");

 File file = new File("E:/Javacode/exercise/12.jpg");

 // 1) 读取本地文件
 FileInputStream in = new FileInputStream(file);

 //定义个输出流
 ServletOutputStream out = response.getOutputStream();

 //定义容器,指定大小
 byte[] buf = new byte[1024];
 int len = 0;
 // 边读边写
 while( (len=in.read(buf)) != -1) {
     out.write(buf, 0, len);
 }
 in.close();
 out.close();

文件下载

request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

File file = new File("E:/Javacode/exercise/12.jpg");

//如果是中文的图片名的话,必须这样进行包装     先通过GBK进行getBytes,然后通过设置新的ISO8859_1
response.setHeader("content-disposition", "attachment;filename=123.jpg"*//*+new String(file.getName().getBytes("GBK"),"ISO8859_1")*//*);

// 1) 读取本地文件
FileInputStream in = new FileInputStream(file);

// 2) 写出给浏览器(字节内容)
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];

int len = 0;
// 边读边写
while( (len=in.read(buf)) != -1) {
    out.write(buf, 0, len);
}

// 关闭
in.close();
out.close();

使用IOUtils工具类来实现文件下载

在这里插入图片描述
注:使用idea需要导入commons-io jar包

//获取要下载的文件名称
String fileName = request.getParameter("file");

//获取要下载的文件类型 (可省略)
String mimeType = getServletContext().getMimeType(fileName);

//告诉浏览器要下载文件的类型(可省略)
response.setHeader("Content-Type", mimeType);

//告诉浏览器是下载文件,不是解析文件
    //先使用utf-8对文件名称进行编码
fileName = URLEncoder.encode(fileName, "utf-8");
    //告诉浏览器是下载文件,不是解析文件
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
    //先使用utf-8对文件名称进行解码
fileName = URLDecoder.decode(fileName, "utf-8");

//获取到要下载文件的真实路径
String realPath = getServletContext().getRealPath("/download/" + fileName);

//使用输入输出流,完成文件的下载---关闭
FileInputStream is  = new FileInputStream(realPath);
OutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
is.close();
jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<a href='/Upload/Respond?file=abc.PNG'>abc.PNG</a><br>
<a href='/Upload/Respond?file=哈哈.zip'>哈哈.zip</a>

</body>
</html>
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页