gpt4 book ai didi

javascript - 从没有弹出窗口拦截器的预签名 URL 下载 S3 文件

转载 作者:搜寻专家 更新时间:2023-11-01 00:37:17 26 4
gpt4 key购买 nike

我有一个 Meteor 应用程序,我在其中使用预签名 URL(需要通过 API 调用生成)从 S3 下载文件。

我遇到了弹出窗口阻止程序的问题,阻止使用 AWS-SDK 生成的 url 打开新选项卡,因此我将代码更改为以下内容:

downloadDocument(document, event) {
// open tab immediately to prevent popup blocker
const myNewTab = window.open();

// call method to generate url
Meteor.call('Events.Methods.Document.Download', { key: document.key, eventId: event._id }, (error, res) => {
if (error) { ... } // removed handle error code

// if url generated, set tab location to url
if (res) myNewTab.location.href = res;

// auto close the tab after 1 second
myNewTab.setTimeout(() => { myNewTab.close(); }, 1000);
});
}

此代码大部分工作正常,但感觉不是很干净。此外,如果 API 调用花费的时间超过 1 秒(网速较慢),则该选项卡将在下载开始前关闭

如何更改此设置,以便在关闭选项卡之前等待下载完成?或者一个类似的解决方案,可以让我确保下载始终顺利进行,而不会出现弹出窗口阻止程序的问题?

谢谢

最佳答案

如果您打开一个新窗口,您总是会遇到弹出窗口拦截器。

你应该做的是生成一个 <a href="my-custom-server-generated-url" download>download 的链接属性,这将在不需要新窗口的情况下强制下载。

然后你也不需要关闭计时器上的窗口(这首先不是一个好方法)

关于javascript - 从没有弹出窗口拦截器的预签名 URL 下载 S3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46992801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com