反应.下载文件时数据未定义



我尝试使用spring引导将文件传递给vue。文件可以打开,但里面什么也没有。我检查了res.data,结果发现它是未定义的。

下面是弹簧靴的代码:

控制部:

@GetMapping("/download/{path}")
public ResponseEntity<InputStreamResource> downloadFiles(@PathVariable String path, HttpServletResponse response) throws IOException {
//fileUtils.getFile(path,response);
return fileUtils.downloadFile(path);
}

FileUtils:

public ResponseEntity<InputStreamResource> downloadFile(String path)
throws IOException {
String filePath = System.getProperty("user.dir") + "\files\" + path;
FileSystemResource file = new FileSystemResource(filePath);
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Content-Disposition", String.format("attachment; filename="%s"", file.getFilename()));
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
return ResponseEntity
.ok()
.headers(headers)
.contentLength(file.contentLength())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(new InputStreamResource(file.getInputStream()));
}

Vue的代码:

handleDownload(path,fileName){
request.get('/files/download/'+path+fileName, {responseType: 'blob'}).then(res => {
console.log(res.data)
fileDownload(res.data, fileName);
}).catch((res)=>{
console.log('download error');
}
)
}

我猜文件中只有"未定义"的原因是res.data是"未定义"。但是我不明白为什么res.data是undefined

fileDownload(res, fileName);works。但我不知道为什么。

相关内容

  • 没有找到相关文章

最新更新