BufferedInputStream inputStream = null;
BufferedOutputStream bos = null;
try {
String fileId = url.replaceAll(nginxpath, "");
//输出流
String suffix = url.substring(url.lastIndexOf("."), url.length());
//new Date().getTime();
inputStream = new BufferedInputStream(FastDFSClient.downloadFile(fileId));
//response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + suffix);
int bytesRead = 0;
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[1024];
//开始向网络传输文件流
while ((bytesRead = inputStream.read(buffer, 0, 1024)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.flush();
inputStream.close();
bos.close();
} catch (IOException e) {
logger.error("下载文件出现错误,错误信息是:", e.getMessage());
} finally {
//关闭流
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
logger.error("关闭输入流失败," + e.getMessage());
e.printStackTrace();
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
logger.error("关闭输出流失败," + e.getMessage());
e.printStackTrace();
}
}
}
vue+axios文件下载需注意的地方
downloadFile(row){ if(this.code === '101'){ return; } request({ url: '//', method: 'post', data: row, responseType: 'blob' }).then((resp) => { console.log(resp); const content = resp; const fileName = row.attachmentName; const blob = new Blob([content]) if ('download' in document.createElement('a')) { // 非IE下载 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) // 释放URL 对象 document.body.removeChild(elink) } else { // IE10+下载 navigator.msSaveBlob(blob, fileName) } }).catch(e => { console.log(e); });