HTTP 下载文件工具类
ResponseUtils.java
package javax.utils; import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse; import com.fasterxml.jackson.databind.ObjectMapper; /**
* HTTP 输出响应内容工具类
*
* @author Logan
* @createDate 2019-02-13
* @version 1.0.0
*
*/
public class ResponseUtils { /**
* 发送HTTP响应信息
*
* @param response HTTP响应对象
* @param message 信息内容
* @throws IOException 抛出异常,由调用者捕获处理
*/
public static void write(HttpServletResponse response, String message) throws IOException {
response.setContentType("text/html;charset=UTF-8"); try (
PrintWriter writer = response.getWriter();
) {
writer.write(message);
writer.flush();
}
} /**
* 发送HTTP响应信息,JSON格式
*
* @param response HTTP响应对象
* @param message 输出对象
* @throws IOException 抛出异常,由调用者捕获处理
*/
public static void write(HttpServletResponse response, Object message) throws IOException {
response.setContentType("application/json;charset=UTF-8");
ObjectMapper mapper = new ObjectMapper(); try (
PrintWriter writer = response.getWriter();
) {
writer.write(mapper.writeValueAsString(message));
writer.flush();
}
} /**
* 下载文件
*
* @param response HTTP响应对象
* @param file 需要下载的文件
* @throws IOException 抛出异常,由调用者捕获处理
*/
public static void download(HttpServletResponse response, File file) throws IOException {
String fileName = file.getName();
try (
FileInputStream in = new FileInputStream(file);
) { download(response, in, fileName);
}
} /**
* 下载文件
*
* @param response HTTP响应对象
* @param data 需要下载的文件二进制内容
* @param fileName 下载文件名
* @throws IOException 抛出异常,由调用者捕获处理
*/
public static void download(HttpServletResponse response, byte[] data, String fileName) throws IOException {
try (
ByteArrayInputStream in = new ByteArrayInputStream(data);
) { download(response, in, fileName);
}
} /**
* 下载文件
*
* @param response HTTP响应对象
* @param in 输出流
* @param fileName 下载文件名
* @throws IOException 抛出异常,由调用者捕获处理
*/
public static void download(HttpServletResponse response, InputStream in, String fileName) throws IOException {
try (
OutputStream out = response.getOutputStream();
) { // 对文件名进行URL转义,防止中文乱码
fileName = URLEncoder.encode(fileName, "UTF-8"); // 空格用URLEncoder.encode转义后会变成"+",所以要替换成"%20",浏览器会解码回空格
fileName = fileName.replace("+", "%20"); // "+"用URLEncoder.encode转义后会变成"%2B",所以要替换成"+",浏览器不对"+"进行解码
fileName = fileName.replace("%2B", "+");
response.setContentType("application/x-msdownload;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName); byte[] bytes = new byte[4096];
int len = -1;
while ((len = in.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
out.flush();
}
} }
HTTP 下载文件工具类
.
HTTP 下载文件工具类的更多相关文章
- java下载文件工具类
java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...
- ftp上传或下载文件工具类
FtpTransferUtil.java工具类,向ftp上传或下载文件: package utils; import java.io.File; import java.io.FileOutputSt ...
- FileUtils 文件工具类
FileUtils 下载jar中的文件 package com.meeno.chemical.common.utils; import lombok.extern.slf4j.Slf4j; impor ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- 自动扫描FTP文件工具类 ScanFtp.java
package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...
- 读取Config文件工具类 PropertiesConfig.java
package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- Property工具类,Properties文件工具类,PropertiesUtils工具类
Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...
- Android FileUtil(android文件工具类)
android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...
随机推荐
- mgo01_window server 2012上安装mongo4.0
目前mongo最新版为4.0(2018-07-18),下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4 ...
- php 数据库查询order by 与查询返回的数据类型
<?php /** * Created by PhpStorm. * User: DY040 * Date: 2017/11/24 * Time: 9:40 * * 从结果集合中读取一行数据 * ...
- from表单,图片预览,和表单提交
<form> <input id="file" class="topsub-file" type="file" name= ...
- Eclipse中项目报Target runtime com.genuitec.runtime.generic.jee60 is not defined异常的解决
参考 http://843977358.iteye.com/blog/2295344
- win10 网络连接怎么删除不再使用的连接
# 打开网络共享中心->更改适配器设置->右击->选择属性->选择配置->选择驱动程序->卸载
- #1413 : Rikka with String 后缀自动机 + 二级差分
http://hihocoder.com/problemset/problem/1413?sid=1199641 这题断断续续做了2个多星期吧,一直不会 设总答案为sum,替换后新加的子串数量为x,失 ...
- 性能测试工具LoadRunner31-LR之链接mysql
步骤: 1.建好mysql数据库并启动 2.下载libmysql.dll,放到保存脚本的文件夹下 3.编写脚本并运行 Action() { int rc; //定义状态变量,0表示成功,非0表示失败 ...
- Spring Cloud学习笔记之微服务架构
目录 什么是微服务 架构优点 架构的挑战 设计原则 什么是微服务 微服务构架方法是以开发一种小型服务的方式,来开发一个独立的应用系统的. 其中每个小型服务都运行在自己的进程中,并经常采 ...
- JavaScript运算符优先级——"++,--,&&,||“
上篇文章比较了"?,="三者的优先级:"?">"=">"," 今天继续学习"++,--,& ...
- Linux raw socket
转载自:http://www.cnblogs.com/uvsjoh/archive/2012/12/31/2840883.html 我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自 ...