我正在尝试使用带有以下代码的springboot和angularjs从服务器下载文件。我正在损坏/无效的文件。
Springboot / Java:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public @ResponseBody ResponseEntity<Resource> getDocument(@RequestParam String filePath) {
String fileName = filePath.substring(filePath.lastIndexOf("\\") + 1);
File file = new File(filePath);
Path path = Paths.get(file.getAbsolutePath());
MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
String contentType = fileTypeMap.getContentType(file.getName());
ByteArrayResource resource = null;
if (contentType == null) {
contentType = "application/octet-stream";
}
try {
resource = new ByteArrayResource(Files.readAllBytes(path));
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.ok().header("Content-Disposition", "attachment; filename=" + fileName).contentLength(file.length()).contentType(MediaType.parseMediaType(contentType)).body(resource);
}
客户端/ JS代码:
self.downloadFile = function(url){
factory.download(url).then(function(response){
let file = new File([ response.data],
response.config.params.fileName,response.config.params.filePath.length), {
type : "*/*"
});
saveAs(file);
},function(error){
unBlock();
});
}
正在下载带有适当扩展名,文件名和文件大小的文件。但是在打开时,我收到无法打开文件或文本损坏的提示。
请为解决此问题的任何其他方法或解决方案提供帮助。