gpt4 book ai didi

javascript - 打开下载链接的最佳做法(而不是 document.location)?

转载 作者:行者123 更新时间:2023-11-28 10:02:03 26 4
gpt4 key购买 nike

我知道一个 URL通常会打开 UA 下载的文件(带有 content-disposition: attachment header ),但有时只会导致 500 或其他错误页面。

目前我通过在 JavaScript 中设置 document.location 来触发下载。

我不想为此打开新选项卡或页面,但我也不希望我的用户有时无缘无故地进入 500 个页面。

有没有办法可以解决我的担忧?

例如,创建一个不可见的<iframe>,并将下载URL作为其来源?我不想发明新东西,而是很好奇是否有人知道经过验证的解决方案。

最佳答案

您可以在使用 HTTP HEAD 请求发送用户之前检查 URL 是否存在

function CheckFileExists(url)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('HEAD', url, false);
xmlhttp.send();

//You may have to invert this to return true if not 500 || 404, this is up to you
if(xmlhttp.status == 200)
{
return true;
}
else
{
alert('Sorry, that file does not exist');
return false;

}
}

你的超链接可以这样写

<a href="http://example.com/myfile.pdf" onclick="return CheckFileExists(this.href);">Download this file</a>

此方法的缺点是单击和开始下载之间会出现延迟。

如果您仍要通过 JavaScript 重定向用户,则可以根据 CheckFileExists 返回的值进行重定向。

关于javascript - 打开下载链接的最佳做法(而不是 document.location)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9011762/

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