前端如何处理后端返回 Blob 格式的数据

情景:React项目,在做「下载」功能时,后端返回的数据格式为 Blob 格式,需要在前端调 API 时,对数据进行处理。

以下👇是前端做的处理,希望可以帮到你。

直接贴代码:

复制代码
  // 引入
  import contentDisposition from 'content-disposition'
  import FileSaver from 'file-saver'

  // 定义 api 
  export type xxxApiReault = ApiResult<any>
  async function downloadRandom(
    xxx: number,
    xxx: string,
    xxx: number,
  ): Promise<xxxApiReault> {
    const resp = await request({
      url: 'xxx',
      method: 'POST',
      responseType: 'blob', // ⚠️注意:响应类型
    })
    const disposition = contentDisposition.parse(resp.headers['content-disposition']) // ⚠️ 这里
    FileSaver.saveAs(new Blob([resp.data]), disposition.parameters.filename) // ⚠️ 这里
    return resp.data
  }

  // 调用 api
  const downloadTemplate = () => {
    $api.random
      .randomFile(xxx, xxx, xxx)
      .then((res) => {
        if (res instanceof Blob) { // 注意⚠️
          Message.success('下载成功!')
        } else {
          Message.error('下载失败!')
        }
      })
  }
复制代码
posted @   Freya~  阅读(2607)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示