首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应下载映像,而不是在新的选项卡中显示

响应下载映像,而不是在新的选项卡中显示
EN

Stack Overflow用户
提问于 2021-08-05 11:31:09
回答 2查看 1.4K关注 0票数 1

在我的react组件中,我有一个函数,它使用文件保护包保存一个文件数组。

文件保护程序包安装:

代码语言:javascript
复制
npm i file-saver

我的反应组件:

代码语言:javascript
复制
import { saveAs } from 'file-saver'

saveImg(urlArr){
    urlArr[0];
    let name = 'img' + 0 + '.jpg';
    saveAs(urlArr[0], name)
    urlArr[2];
    let name2 = 'img' + 2 + '.jpg';
    saveAs(urlArr[2], name2)
}

,但我的期望是下载文件,而不是在新的浏览器选项卡中打开图像。我想触发从react组件下载。如何强制下载?用于下载的其他库是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-06 08:01:07

是的,我尝试了代码框,如果是file-saver,将打开一个新的选项卡,而不是下载图像。但是,你可以尝试使用blob的方法:

代码语言:javascript
复制
import { saveAs } from 'file-saver'

saveImg(urlArr){
    (async () => {
       let name = 'img' + 0 + '.jpg';
       let blob = await fetch(urlArr[0]).then((r) => r.blob());
       saveAs(blob, name);
    })();
    (async () => {
       let name2 = 'img' + 2 + '.jpg';
       let blob2 = await fetch(urlArr[2]).then((r) => r.blob());
       saveAs(blob2, name2);
    })();  
}
票数 2
EN

Stack Overflow用户

发布于 2022-07-18 14:35:43

基于上面@乔瓦尼·埃斯波西托的答案,

谢谢Giovanni的回答,但是,我向firebase存储提出的提取请求被CORS阻止了,所以这个方法一开始就失败了。

万一其他人遇到这样的问题,就会被CORS阻止。您将使用Firebase存储进行其他配置。

帖子讨论了您需要使用Google进行的配置,以使请求正常工作。

就我的情况而言,我使用react.js从本地主机发出请求。下面是我必须添加到我的cors.json文件中的片段。

代码语言:javascript
复制
[
    {
      "origin": ["http://localhost:3000"],
      "method": ["GET"],
      "maxAgeSeconds": 3600
    }
]

我希望这对任何遇到我问题的人都有帮助。

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

https://stackoverflow.com/questions/68665763

复制
相关文章

相似问题

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