js操作文件流

发布于 2022-09-12 03:35:39 字数 103 浏览 26 评论 0

做一个文件导出,后台程序给我返回了一个文件流,之前都没这样操作过,js要怎么操作文件流?23.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

百合的盛世恋 2022-09-19 03:35:39

你是 AJAX 发起的请求吗?

那就指定接收响应为 blob,利用 URL.createObjectURL 方法转为本地链接并唤起保存。

月寒剑心 2022-09-19 03:35:39

先看一下有下载头吗?没有下载头的话,就用楼上的方案生成bloburl然后用download下载

吐个泡泡 2022-09-19 03:35:39

AJAX方法

/**
* @param method 请求方式
* @param url 你的请求地址
* @param filename 文件名 // 这个根据具体需求,看你传进来还是什么方式获取
*/
function downloadFile(options) {
    var xhr = new XMLHttpRequest()
    xhr.open(options.method || 'POST', options.url, true)
    xhr.responseType = 'blob'
    xhr.send()
    xhr.onload = function() {
        if (this.status == 200) {
            var blob = this.response
            if (window.navigator.msSaveOrOpenBlob) {
                navigator.msSaveBlob(blob, options.filename)
            } else {
                var a = document.createElement('a')
                var blobUrl = window.URL.createObjectURL(blob)
                a.href = blobUrl
                a.download = options.filename
                a.click()
                window.URL.revokeObjectURL(options.url)
                a = null
            }
        }
    }
}
小矜持 2022-09-19 03:35:39
const reader = res.body.getReader();

const fileArr = []; // 存放
const stream = new ReadableStream({
start(controller) {
  function push() {
    // "done"是一个布尔型,"value"是一个Unit8Array
    reader.read().then(({ done, value }) => {
      if (done) {  // 接受结束
        console.log("ok");
        const blob = new Blob(imageArr);
        const file = new FileReader();
        file.onload = function (e) {
          self.img = e.target.result;
        };
        file.readAsDataURL(blob);
        return;
      }
      fileArr.push(value);  // 因为如果文件很大一次性接受不完,就需要多次接受数据,直到完成
      push();
    });
  }
  push();
}
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文