0

我正在开发一个 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 数据库中。我尝试了多种不同的方法来下载文件,但每次都遇到相同的错误。任何帮助将不胜感激!

4

0 回答 0