3个回答

1
您可以使用XMLHttpRequestfetch来请求文件,如果没有错误发生,设置<a>元素的hrefdownload属性,否则将用户重定向到显示错误响应的文档。

1
很遗憾,浏览器没有提供我们覆盖默认设置的机制。你可以尝试其他人已经指出的方法,但这个答案是在之前的基础上进行的。
如果你对Web服务器有控制权,你可以为GET方法添加一个端点,并且同时为HEAD方法添加一个端点。HEAD方法请求的响应与GET请求完全相同,只是没有响应体,这非常适合这种情况。
假设文件大小为1GB(或更大),使用XHR或fetch下载时间会很长,仅仅是为了判断文件是否存在。如果你缓存了响应,一旦你尝试将文件下载到用户设备上,下载时间会快得多,但如果你无法缓存文件,下载时间将再次相同。
使用HEAD方法验证文件是否存在,你只需下载响应头而不是文件本身,所以请求会完成得更快。在响应中,只需验证状态码(200或404)来确定文件的有效性。

MDN文档Head方法


1

你可以创建新的元素,比如按钮,并使用jQuery Ajax请求来检查服务器是否可用。

$.ajax({
    url: "/url/to/file",
    type: "GET",
    success: //handle succes -> download file,
    error: //handle error
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接