后端以流的方式输出文件
@RequestMapping(value = "/downloadExcel")
public String download(@RequestParam String directory, @RequestParam String fileName, HttpServletRequest request,
HttpServletResponse response) {
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="+ fileName);
try {
String path= "/xxx/xxx/xxx/"+directory;
InputStream inputStream = new FileInputStream(new File(path+ File.separator + fileName));
OutputStream os = response.getOutputStream();
byte[] b = new byte[2048];
int length;
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
}
os.close();
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
if (file.isFile() && file.exists()) {
Boolean succeedDelete = file.delete();
if (succeedDelete) {
logger.info("删除单个文件" + fileName + "成功!");
return true;
} else {
logger.info("删除单个文件" + fileName + "失败!");
return true;
}
} else {
logger.info("删除单个文件" + fileName + "失败!");
return false;
}
}
前端下载流方式的文件
downLoad(){
let fileName = "要下载文件的名字.xlsx";
downloadFile("文件存放目录",fileName).then((data) => {
console.log("qualify-------"+data);
if (!data) {
return
}
let url = window.URL.createObjectURL(data);
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
})
}