$.ajax(
{
type: "POST",
url: '/XXX/downloadDocument',
xhrFields: {responseType: 'blob'},
contentType: "application/json",
success: function(result, status, xhr){
// 根据后端设置头数据获取文件名
const fileName = window.decodeURI(xhr.getResponseHeader("Content-disposition").split('=')[1], "UTF-8");
// 可通过XMLHttpRequest对象,获取响应头
console.log(xhr);
// 浏览器兼容 参数Blob类型
const downloadURL = (window.URL || window.webkitURL).createObjectURL(result);
// 创建a标签
var a = document.createElement('a');
// 下载后文件的名字
a.download = fileName;
a.href = downloadURL;
document.body.appendChild(a);
a.click();
setTimeout(function () {
// 移除内存中的临时文件路径和为下载而创建的a标签
URL.revokeObjectURL(downloadURL);
a.remove();
}, 10000);
}
}
)
File file = new File(docPath);
if (!file.exists()) {
return AjaxResult.error("请您输入正确的文件ID");
}
InputStream inputStream = null;
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8"));
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/octet-stream");
inputStream = new FileInputStream(file);
bufferedInputStream = new BufferedInputStream(inputStream);
bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
IOUtils.copy(bufferedInputStream, bufferedOutputStream);
} catch(Exception e){
logger.error("下载文件异常",e);
return AjaxResult.error("下载文件异常");
} finally {
try {
if(null!=inputStream){
inputStream.close();
}
if(null!=bufferedInputStream){
bufferedInputStream.close();
}
if(null!=bufferedOutputStream){
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
} catch (Exception e) {
logger.error("档案管理停流异常",e);
}
}