如何解决如何从获取中返回的浏览器上下载ReadableStream
我正在从服务器接收ReadableStream,这是我的提取调用返回的。
返回了ReadableStream,但我不知道如何从此阶段触发下载。我无法在href中使用该网址,因为它需要授权令牌。
我不想在客户端上安装fs
,所以我有什么选择?
try {
const res = await fetch(url,{
method: 'GET',headers: {
Authorization: `Bearer ${token}`,'Content-Type': 'application/octet-stream'
}
});
const blob = await res.blob();
const newBlob = new Blob([blob]);
const newUrl = window.URL.createObjectURL(newBlob);
const link = document.createElement('a');
link.href = newUrl;
link.setAttribute('download','filename');
document.body.appendChild(link);
link.click();
link.parentNode.removeChild(link);
window.URL.revokeObjectURL(newBlob);
} catch (error) {
console.log(error);
}
更新1
我将文件转换为Blob,然后将其传递给新生成的href。成功下载文件。最终结果是ReadStream内容为.txt文件。
这样的意思
x:ÚêÒÓ%¶âÜTb∞\܃
解决方法
我找到了两种解决方案,都可以使用,但是我错过了一个简单的补充方法来使它们起作用。
本机解决方案是
NA
此版本对任何喜欢它的人使用npm软件包steamSaver。
'na'
为什么它不起作用的关键是因为我没有包含扩展名,所以它要么由于mimetype错误而出错,要么打开带有正文字符串而不是图像的.txt文件。 / p>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。