是否有可能获得XMLHttpRequest的进度(上传的字节数,下载的字节数)?
当用户上传大文件时,这对于显示进度条很有用.标准API似乎不支持它,但也许在那里的任何浏览器中都有一些非标准扩展?毕竟,这似乎是一个非常明显的功能,因为客户端知道上载/下载了多少字节.
注意:我知道"轮询服务器进度"替代方案(这就是我现在正在做的事情).这个问题的主要问题(除了复杂的服务器端代码)通常是,在上传大文件时,用户的连接是完全没有的,因为大多数ISP提供了较差的上游.因此,提出额外请求并不像我希望的那样响应.我希望有一种方法(可能是非标准的)来获取这些信息,浏览器始终拥有这些信息.
我知道有关于此的几个主题,但没有一个为文件上传器脚本提供了明确的解决方案:
有解决方案吗
可能重复:
在PHP中上传进度条
任何人都可以建议一个简单的方法来包含文件上传进度条,同时上传文件.我知道这将是javascript和php的混合.请建议一个
我目前正在开发一个Web应用程序,允许用户上载文件而无需重新加载页面.到目前为止,用户可以浏览文件,当输入更改时,使用以下iframe技术上传文件:
HTML:
<iframe name="iframe-target" src="./Image" style="display:none;"></iframe>
<form method="POST" enctype="multipart/form-data" id="old-style-upload" target="iframe-target" action="./Image">
<input type="file" name="files[]" multiple id="old-file-picker" >
</form>
Run Code Online (Sandbox Code Playgroud)
使用Javascript/jQuery的:
$('#old-file-picker').change(function () {
// Submit the form
$('#old-style-upload').submit();
});
$('iframe[name=iframe-target]').load(function () {
// Code that deals with the newly uploaded files
$('#old-style-upload').get(0).reset();
});
Run Code Online (Sandbox Code Playgroud)
这很好用,但是,用户无法知道文件正在上传,也无法知道需要多长时间.有没有办法制作一个显示文件上传进度的进度条?
我唯一能想到的就是显示一个加载的gif.
是否可以在正常文件上传中显示进度条,而不使用ajax?例如我有一个表格:
<form action='fileupload.php' method='POST'>
<input type='file' name='file1' />
<input type='submit' value='Upload'>
</form>
Run Code Online (Sandbox Code Playgroud)
我选择一个文件并单击上传。是否可以显示进度条,直到文件完全上传并重定向页面?因为非 AJAX 上传适合我的情况,而且我不想仅仅为了进度条而使用整个复杂的插件。
我知道这个问题到目前为止还没有结论性的答案,但它绝对不是所标记问题的重复。对那些无法理解的人的解释:文件上传的进度应该在两个地方知道 -服务器,同时接收文件包。客户端浏览器,同时从服务器接收各个数据包的确认(互联网协议?)。目前,几乎所有进度条算法都基于在客户端的 javascript 和服务器上的 PHP 之间显式发送与文件上传并行的 AJAX 数据。我的问题是,是否有任何方法可以在没有并行通信的情况下了解文件上传的进度,因为浏览器必须已经知道服务器接收到的数据包......
javascript ×4
jquery ×3
php ×3
ajax ×2
file-upload ×2
html ×2
progress-bar ×2
css ×1
iframe ×1