首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Angular 4+中保存blob响应类型

如何在Angular 4+中保存blob响应类型
EN

Stack Overflow用户
提问于 2017-10-28 03:03:41
回答 2查看 14.6K关注 0票数 2

所以我调用了一个API,它将一个文件返回给我的Angular,如下所示:

代码语言:javascript
运行
复制
getFile(fileInformation) {
  const req = new HttpRequest('POST', 'filedownload', fileInformation, { reportProgress: true, responseType: "blob" });
  return this.http.request(req);
}

在API Controller中(我跟随this SO top answer完成了这一步):

代码语言:javascript
运行
复制
Public Function GetFile(fileInformation As FileDto) As HttpResponseMessage
    Dim filePath = Path.Combine(FileConstants.FilePath, fileInformation.FileType, fileInformation.FileName)
    Dim fileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read)

    Dim result = new HttpResponseMessage(HttpStatusCode.OK)
    result.Content = New StreamContent(fileStream)
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream")

    Return result
End Function

此调用返回的结果为HttpResponse,body类型为Blob

代码语言:javascript
运行
复制
HttpResponse: {
  blob: {
    size: 289940,
    type: "application/octet-stream"
  },
  headers: ...,
  status: 200,
  ...
}

现在如何在接收响应的Angular组件中触发此文件的下载?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-28 03:16:01

安装FileSaver from npm

代码语言:javascript
运行
复制
npm install --save file-saver

将其导入到拥有blob实例的类中

代码语言:javascript
运行
复制
import * as FileSaver from 'file-saver';

那就打电话给我

代码语言:javascript
运行
复制
FileSaver.saveAs(blob, fileName);
票数 21
EN

Stack Overflow用户

发布于 2021-04-16 20:02:21

正如@Jason Spradlin指出的那样,你可以使用FileSaver

save file还有另一个包:

代码语言:javascript
运行
复制
npm install @progress/kendo-file-saver --save

使用:

代码语言:javascript
运行
复制
import { saveAs } from '@progress/kendo-file-saver'

saveAs(data: string | Blob, fileName: string, options?: SaveOptions)

1-数据为base64

代码语言:javascript
运行
复制
const result = `data:${YOUR_MIME_TYPE};base64,` + YOUR_DATA;
saveAs(result, YOUR_FILE_NAME);

2-数据为Blob

代码语言:javascript
运行
复制
saveAs(YOUR_DATA, YOUR_FILE_NAME);

手动

代码语言:javascript
运行
复制
const file = new window.Blob([data], { type: contentType });

const downloadAncher = document.createElement("a");
downloadAncher.style.display = "none";

const fileURL = URL.createObjectURL(file);
downloadAncher.href = fileURL;
downloadAncher.download = fileName;
downloadAncher.click();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46981818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档