首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Safari和Firefox中的流文件下载

Safari和Firefox中的流文件下载
EN

Stack Overflow用户
提问于 2020-06-11 13:05:56
回答 1查看 1.1K关注 0票数 2

当前,如果用户希望下载大型zip文件,则下载是流的。

这是通过获取一个端点来完成的,然后使用Streamsaver.js将下载流传输到他们的浏览器,如下所示。

代码语言:javascript
复制
function download(id, fileName) {
  const endpoint = `.../extract/downloads/zip_download/?id=${id}`;
  return fetch(endpoint, requestOptions.get()).then(res => {
    const downloadSize = res.headers.get("content-length");
    const fileStream = createWriteStream(fileName, { size: downloadSize });
    const writer = fileStream.getWriter();
    if (res.body.pipeTo) {
      writer.releaseLock();
      return res.body.pipeTo(fileStream);
    }

    const reader = res.body.getReader();
    const pump = () =>
      reader
        .read()
        .then(({ value, done }) =>
          done ? writer.close() : writer.write(value).then(pump)
        );

    return pump();
  });
}

这在Chrome中很好,但是我遇到了Firefox和Safari的问题。我明白的问题是:

代码语言:javascript
复制
TypeError: undefined is not a constructor (evaluating 'new streamSaver.WritableStream')

还有什么其他方法可以解决这个问题呢?当然,一定有一种通用的方式来流我正在丢失的一个大的下载?

EN

回答 1

Stack Overflow用户

发布于 2022-02-07 23:28:27

我遇到了同样的问题,并将web-streams-polyfill包包含在我的项目中以修复它。目前,一些非铬浏览器似乎不支持WritableStream.

对于我自己来说,我只是在我的index.html中包含了这个脚本标记

<script src="https://unpkg.com/web-streams-polyfill/dist/polyfill.min.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62325140

复制
相关文章

相似问题

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