response.
setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType("application/octet-stream");
response.addHeader("Content-disposition", "attachment;filename=" + fileName + ";filename*=UTF-8" + fileName);
response.addHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
filename编码格式:
* 编码格式转换
* @param request 请求
* @param pFileName 文件名称
* @return String
* @throws UnsupportedEncodingException
private String encodeChineseDownloadFileName(HttpServletRequest request, String pFileName)
throws UnsupportedEncodingException {
String filename;
String agent = request.getHeader("USER-AGENT");
if (null != agent) {
if (-1 != agent.indexOf("Firefox")) {
filename = "=?UTF-8?B?" + (new String(Base64.decode(pFileName.getBytes(StandardCharsets.UTF_8)))) + "?=";
} else if (-1 != agent.indexOf("Chrome")) {
filename = new String(pFileName.getBytes(), StandardCharsets.ISO_8859_1);
} else {
filename = URLEncoder.encode(pFileName, StandardCharsets.UTF_8.name());
} else {
filename = pFileName;
return filename;
前端代码:
function downLoadFile (url) {
url += '&access_token=' + sessionStorage.getItem('accessToken') || localStorage.getItem('accessToken')
const elink = document.createElement('a')
elink.style.display = 'none'
elink.href = url
document.body.appendChild(elink)
elink.click()
document.body.removeChild(elink)
文档格式对照表:http://tools.jb51.net/table/http_content_type
eg: .zip —— application/zip ;.xls —— application/vnd.ms-excel
前端代码:
axios.defaults.baseURL = 'http://localhost:8080'
export function downLoadFileZip (url, params = {}, fileName, baseURL, timeout) {
if (baseURL) {
axios.defaults.baseURL = baseURL
if (timeout) {
axios.defaults.timeout = timeout
let config = {
'responseType': 'blob',
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/octet-stream; charset=utf-8',
'token': sessionStorage.getItem('accessToken') || localStorage.getItem('accessToken')
axios.post(url, params, config).then(response => {
fileName = this.getFileName(fileName, response)
let blob = new Blob([response.data], { type: 'application/zip' })
if ('download' in document.createElement('a')) {
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
} else {
navigator.msSaveBlob(blob, fileName)
.catch(error => {
console.log(error)
* 获取文件面那改成
* @param {*} fileName 文件名称
* @param {*} response 响应
getFileName(fileName, response) {
let contentDisposition = response.headers['content-disposition']
if (contentDisposition) {
let filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/
let matches = filenameRegex.exec(contentDisposition)
if (matches != null && matches[1]) {
fileName = matches[1].replace(/['"]/g, '')
fileName = decodeURI(fileName)
return fileName
`
注: 之前用的get请求方法,出现了如下情况
转换成.zip是能转换的,但是转换出的zip文件比链接下载的更大。
出现三种情况(和上传的文件个数和顺序有关):
- 压缩包里只有一个文件时,正常

- 压缩包应有多个文件时,转换后只有一个文件,其余的文件没有了

- 压缩包应有多个文件时,整个里面就变成了一个文件

批处理流程进行基本文件操作,比如删除旧文件,导出处理日志等调用main.sql生成一个数据库表导出的sql脚本export.sql调用步骤2中生成的sql脚本export.sql,输出oracle数据到文件系统使用7z压缩文件批处理文件内容::-------------------------
:: by tangtao 2018.03.05
::-------------------------...
最近在做爬虫项目的时候遇到了点问题,就是从别人的服务器请求后获得的响应byte[]数据,并不想在本地服务器进行转存后再下载,所以就尝试了直接生成下载包。
public void export_1 (HttpServletResponse response, HttpServletRequest request) {
//相关网络请求及响应操作省略此处
//dosomethin
method: "post",
url: '/test/downloadZip',
data: {reportAllotMonthId:val.id,name:val.reportFormName,month:val.month},
headers: {
"content-type"
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStre
const downloadFiles = (data) => {
// data为流数据
let blob = new Blob([data], { type: 'application/zip' })
let url = window.URL.createObjec
在Eclipse中新建项目CompressFiles,并在其中创建一个CompressFiles.java文件。在该类的主方法中创建compressAllZip()方法,实现对指定的目录和文件进行压缩的目的。核心代码如下所示:
public class CompressFiles {
// 压缩文件或者目录,其中:dirPath:压缩的根目录,srcName:
// dirPath目录下的所有...
叼着零食打架:
Mockito PowerMock 的demo示例及踩坑记录
Jacky_1013:
Mockito PowerMock 的demo示例及踩坑记录
Jacky_1013:
spring boot 一个极简单的 demo 示例
白衣若尘: