gpt4 book ai didi

javascript - 仅从客户端检测下载开始/文件传输的开始

转载 作者:行者123 更新时间:2023-11-29 15:31:07 25 4
gpt4 key购买 nike

我注意到在询问如何之前有一个问题“Detect when browser receives file download”。

这需要服务器发送 cookie 才能完成这些步骤。但是,我想检测浏览器是否只在客户端接收文件,因为我无法在服务器端修改任何内容。

我遇到的问题是我必须从网站下载许多 zip 文件。 zip 文件是动态生成的,因此在我提交请求之前没有可下载的 URL。首先,我编写了一个 for 循环来执行以下操作。

function myfunc(i){
setTimeout(function(){
$("form").submit();
},2000*(i)
}
for (i=1; i<4; i++) {
myfunc(i);
} //i

但是有可能在浏览器收到第一个文件(i=1)之前,浏览器已经提交了请求第二个文件的表单(i=2) 并取消第一个文件的请求。所以在请求第二个文件之前我必须确保第一个文件已经启动。

ajax 似乎不是一个选项,因为它似乎无法处理 zip 文件下载。

我该怎么做?

最佳答案

编辑:您还可以使用 ajax 调用来获取 zip 的 base64 字符串,然后在客户端将其转换为 html5 中的 blob。但这需要在文件服务器端进行 base64 编码,文件大小增加了大约 33%。


我会进行 ajax 调用,检查文件是否在使用计时器开始下载后生成:

$.ajax({
type: 'HEAD',
url: 'generatedfileurl',
success: function() {
alert('File found.');
},
error: function() {
alert('File not found.');
}
});

然后,当找到文件时,我会等待几秒钟,然后开始下载 nr2,因为我假设文件 nr1 已经在下载,因为它已经生成。

这远非理想,我绝对建议在服务器端使用 cookie 或其他东西。

关于javascript - 仅从客户端检测下载开始/文件传输的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34804434/

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