我正在开发一个 Web 应用程序,我的一个用例是让用户能够从服务器上传和下载文件。我正在使用 ReactJs 和 Spring Boot。
前端代码:
downloadFileClicked(id, fileName, fileType){
TestDataService.downloadFile(id)
.then(response=>{
console.log(response)
const file = new Blob(
[response.data],
{type: fileType}
)
let url = window.URL.createObjectURL(file)
let a = document.createElement('a')
a.href=url
a.download= fileName
a.click()
})
}
后端代码:
@GetMapping("/downloadFile/{fileId:.+}")
public ResponseEntity<Resource> downloadFile(@PathVariable Long fileId, HttpServletRequest request ){
//Load file as a resource
DatabaseFile databaseFile = fileStorageService.getFile(fileId);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(databaseFile.getFileType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+databaseFile.getFileName()+"\"")
.body(new ByteArrayResource(databaseFile.getData()));
}
当用户单击下载时 - 文件确实下载并且看起来格式正确,但是当每个应用程序尝试打开文件时,我都会遇到文件格式不受支持或文件损坏等错误。
文件数据作为字节数组存储在 MySQL 数据库中。我尝试了多种不同的方法来下载文件,但每次都遇到相同的错误。任何帮助将不胜感激!