Angular前端Spring后端文件下载不起作用或损坏
创始人
2024-10-29 02:00:44
0
  1. 确认后端服务器是否正确设置了文件下载响应头,示例代码如下:
@GetMapping("/downloadFile")
public ResponseEntity downloadFile(@RequestParam String fileName) throws IOException {

    Resource resource = fileService.loadFileAsResource(fileName);

    return ResponseEntity.ok()
        .contentType(MediaType.parseMediaType("application/octet-stream"))
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
        .body(resource);
}

其中,loadFileAsResource()方法需要返回一个实现了 Spring 的Resource接口的文件资源对象。

  1. Angular前端中需要使用文件下载的时候,需要将响应数据以 blob 的形式接收,并使用 window.URL.createObjectURL()将其转换为文件 URL,示例代码如下:
downloadFile(fileName: string): void {
    this.fileService.downloadFile(fileName).subscribe(data => {
      let blob = new Blob([data], { type: 'application/octet-stream' });

      // 使用 createObjectURL 将响应数据转换为 URL
      let url = window.URL.createObjectURL(blob);
      let a = document.createElement('a');
      a.href = url;
      a.download = fileName;
      a.click();
      window.URL.revokeObjectURL(url);
    });
}

其中,downloadFile()方法需要返回一个Observable对象,将响应数据以二进制数据流的形式传递给subscribe()响应函数。

通过以上两步操作,应该可以解决Angular前端Spring后端文件下载不起作用或损坏的问题。

相关内容

热门资讯

专业透视!WePOker有没有... 专业透视!WePOker有没有透视方法,uupoker有透视吗,大纲教程(有挂细节)-哔哩哔哩1、下...
关于透视!佛手在线大菠萝技巧!... 关于透视!佛手在线大菠萝技巧!切实有辅助方法(有挂细节)-哔哩哔哩1、该软件可以轻松地帮助玩家将佛手...
推荐透视!wepoker数据分... 推荐透视!wepoker数据分析,约局吧是否有挂,总结教程(有挂详细)-哔哩哔哩1)约局吧是否有挂免...
专业透视!拱趴大菠萝挂哪里!原... 专业透视!拱趴大菠萝挂哪里!原来一直总是有辅助教程(有挂存在)-哔哩哔哩1、进入到拱趴大菠萝挂哪里是...
了解透视!aapoker怎么设... 了解透视!aapoker怎么设置提高好牌几率,wepoker破解游戏盒子,机巧教程(有挂透明挂)-哔...
解迷透视!德州私人局脚本!一直... 解迷透视!德州私人局脚本!一直存在有辅助工具(有挂细节)-哔哩哔哩1、起透看视 德州私人局脚本辅助软...
普及透视!wepoker怎么买... 普及透视!wepoker怎么买辅助,pokemmo辅助工具,手册教程(有挂教学)-哔哩哔哩1、该软件...
解密透视!werplan怎么作... 解密透视!werplan怎么作必弊!真是一直都是有辅助脚本(有挂解惑)-哔哩哔哩一、werplan怎...
推荐透视!agpoker辅助,... 推荐透视!agpoker辅助,wpk控制牌是真的吗,课程教程(有挂分享)-哔哩哔哩1、下载好wpk控...
分享透视!佛手大菠萝辅助!确实... 分享透视!佛手大菠萝辅助!确实一直总是有辅助工具(真的有挂)-哔哩哔哩佛手大菠萝辅助透视方法中分为三...