首页 > 解决方案 > 从 REST api 下载具有不同文件类型的文件

问题描述

您好我正在尝试在轻量级版本中实现一些文件管理器。在服务器端,我使用 Java Spring Boot / Rest API,方法如下所示:

InputStream inStream = fmService.downloadFile("...url..." + path);
    
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
org.apache.commons.io.IOUtils.copy(inStream, response.getOutputStream());
response.getOutputStream().flush();

前端使用 Angular。我试图从这样的网址获取:

downloadFile() {
    const headers = new HttpHeaders({'responseType': 'blob'}); //also tryed array buffer or text

    this.http.get("http://localhost:8080/file?path=/Documents/Nextcloudflyer.pdf&filename=Nextcloudflyer.pdf", 
    {headers: headers}).subscribe((res) => {
      console.log("RES: ", res);
    });
}

当我使用 downloadFile() 时,我现在收到以下错误:

在此处输入图像描述

第一个问题是:虽然我尝试使用 pdf 进行此操作,但我需要它适用于所有文件类型。但具体如何?(听说过诸如八位字节流类型之类的东西?但无法让它工作。)有没有简单的方法,或者我真的必须自己处理每个文件类型,就像我有时看到的那样?

第二个问题当然是错误:这里发生了什么?我正在将一个字节流放入响应中,并且似乎 Angular 得到了它(得到的是代码 200,所以看起来还可以)。但是出了什么问题?我是否以错误的方式构造了 ByteArray?还是某些标题设置错误或被遗忘?

标签: angularspring-boot

解决方案


推荐阅读