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后端文件下载不起作用或损坏的问题。

相关内容

热门资讯

透视辅助!hhpoker透视脚... 透视辅助!hhpoker透视脚本,德普之星有透视辅助吗,窍要教程(都是是真的挂)-哔哩哔哩德普之星有...
透视网页版!约局吧辅助脚本(透... 透视网页版!约局吧辅助脚本(透视)开挂辅助挂(真是真的有挂)-哔哩哔哩1、许多玩家不知道约局吧辅助脚...
刚刚!impoker辅助,新道... 刚刚!impoker辅助,新道游开挂,果然存在有挂(详情新版2025教程)-哔哩哔哩1、任何新道游开...
透视好友房!aapoker辅助... 透视好友房!aapoker辅助怎么用,hhpoker一直输有挂吗,课程教程(真是真的是有挂)-哔哩哔...
透视app!智星德州插件怎么下... 透视app!智星德州插件怎么下载(透视)开挂辅助方法(切实真的是有挂)-哔哩哔哩亲,关键说明,智星德...
近年来!wepoker轻量版有... 近年来!wepoker轻量版有透视吗,衢州都莱辅助器是真的假的,果然是有挂(解密细节方法)-哔哩哔哩...
透视安卓版!wpk软件是真的吗... 透视安卓版!wpk软件是真的吗,wepoker有没有挂,模板教程(真是有挂)-哔哩哔哩1、金币登录送...
透视靠谱!wpk透视工作室(透... 透视靠谱!wpk透视工作室(透视)开挂辅助工具(竟然是真的挂)-哔哩哔哩一、wpk透视工作室AI软件...
透视好友!哈糖大菠萝软件下载,... 透视好友!哈糖大菠萝软件下载,微乐河南家乡麻将辅助脚本,一直是有挂(科普2025版教程)-哔哩哔哩1...
透视苹果版!aapoker怎么... 透视苹果版!aapoker怎么提高中牌率,wepoker辅助透视,课程教程(都是有挂)-哔哩哔哩1、...