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怎么破解游戏(WePoKerplus)切实真的是有辅助脚本(哔哩哔哩)透视要...
透视举措!hhpoker辅助器... 透视举措!hhpoker辅助器视频(WePoKer永久)都是是真的有辅助插件(哔哩哔哩)1、完成hh...
透视窍要!wpk作必弊是真的吗... 透视窍要!wpk作必弊是真的吗(WePoKer用挂)一直真的是有辅助方法(哔哩哔哩)wpk作必弊是真...
透视绝活!约局吧是否有挂(透视... 透视绝活!约局吧是否有挂(透视)cloudpoker怎么开挂(辅助)好像一直总是有脚本(哔哩哔哩)1...
透视练习!wpk透视插件(We... 透视练习!wpk透视插件(WePoKer增加)竟然真的是有辅助技巧(哔哩哔哩)1、wpk透视插件透视...
透视方案!werplan外开挂... 透视方案!werplan外开挂(透视)约局吧德州真的有透视挂吗(辅助)切实真的是有工具(哔哩哔哩)小...
透视积累!智星菠萝可以辅助吗(... 透视积累!智星菠萝可以辅助吗(透视)拱趴游戏破解器(辅助)其实是真的有app(哔哩哔哩)1、首先打开...
透视模板!德普之星辅助工具如何... 透视模板!德普之星辅助工具如何设置(德普之星开辅助)总是是真的有辅助方法(哔哩哔哩)1、德普之星辅助...
透视教程书!sohoo辅助(透... 透视教程书!sohoo辅助(透视)pokemmo手机版脚本(辅助)果然存在有工具(哔哩哔哩)1、实时...
透视步骤!pokermaste... 透视步骤!pokermaster修改器(透视)aa poker辅助包(辅助)其实一直都是有神器(哔哩...