java web文件下载通用controller
来源:互联网 发布:温州单片机开发设计 编辑:程序博客网 时间:2024/04/30 01:31
话不多说,直接上代码,需要的jar包自己找
package com.heshao.spr.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
*
* FileController
* @author heliang
* @version 1.0
* implements ServletContextAware
*/
@Controller
@RequestMapping("/file")
public class FileController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@RequestMapping("/download")
public void download(@RequestParam(value = "path", required = false) String path,
@RequestParam(value = "fileName", required = false) String fileName, HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
logger.info("name is :{}", path);
if (StringUtils.isBlank(path) && StringUtils.isBlank(fileName)) {
return;
}
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
//2.设置文件头
String userAgent = request.getHeader("User-Agent");
if (StringUtils.isBlank(userAgent)) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
if (userAgent.indexOf("MSIE") != -1) {
// IE使用URLEncoder
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
// FireFox使用ISO-8859-1
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
}
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setDateHeader("Expires", (System.currentTimeMillis() + 1000));
File file = new File(path);
OutputStream out = null;
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
out = response.getOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while ((count = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, count);
}
out.close();
out.flush();
} catch (IOException e) {
logger.error("文件下载异常:{}", e);
} finally {
response.reset();
IOUtils.closeQuietly(inputStream);
}
}
}
- java web文件下载通用controller
- java文件下载通用
- Java中都通用文件下载
- Java web 文件下载
- Java web----文件下载
- Java WEB 文件下载
- java web文件下载
- Java Web文件下载
- java web 文件下载
- java web-文件下载
- java web-文件下载
- Java Web文件下载
- java web 下载文件
- java web 文件下载
- JAVA web- 文件下载
- java web 文件下载
- java通用文件下载代码带注释
- java web项目文件下载
- Xcode8 提交到iTunesconnect遇到的坑总结
- React native 入门一
- springmvc文件上传2
- PHP JSON解压失败 解压为空 问题 解决方法
- 【studio】整理了下studio中make Project、clean Project、Rebuild Project的区别
- java web文件下载通用controller
- Linux shell ${}简单用法
- Android Studio StrictMode
- iOS textView
- 集成Vitamio,实现媒体播放(附电视播放Demo)
- redhat 安装图形化界 和配置ios挂载yum源
- 如何使用CubeMx制作一个基于SD卡的文件系统工程
- Leetcode-74. Search a 2D Matrix
- oracle索引总结