仅从客户端检测下载开始/文件传输的开始
Detect start of download start / file transfer from client side only
我注意到在问如何"检测浏览器何时收到文件下载"。
这需要服务器发送 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 或其他服务器端的东西。
相关文章:
- 从头开始创建XLS文件
- jQuery从零开始上传多个文件
- 从任意行X开始读取超长文件的最快方式
- 在JQuery中,'加载'方法'的相对路径在引用项目中的html文件时开始
- 加载页面时开始下载文件
- Blueimp jQuery文件上传插件 - 单击“开始上传”时出现超过配额错误
- 使用序号重命名文件 - 从文件夹中的最高数字开始索引
- 仅从客户端检测下载开始/文件传输的开始
- PhpStorm使用自定义的开始和结束行将文件的一部分突出显示为JavaScript
- 从noflo-nodejs开始——图<json文件>--batch—register false
- 如何在 node js 应用程序中压缩文件夹并在 zip 下载开始后
- 无法在开始或位置搜索时加载KML文件以在自定义地图中工作
- 我的PDF文件一开始没有被选中,只有在ie浏览器中才被选中
- 如何防止用户在gridview中多次点击imagebutton开始下载文件.净Webforms
- 如何播放随机的声音没有重复?播放完所有文件然后再次开始新的声音循环
- jquery文件上传的全局开始/结束事件
- Spotify应用程序-开始播放本地文件
- 选择一个文件后开始上传,使用jQuery
- 开始使用JQuery下载文件
- 是否值得使用Rails的内置Javascript文件,或者从头开始