我正在尝试以这种方式上传文件的文件大小
1。启动$ .ajax();请求启动服务器到服务器下载文件(我正在使用php fopen
+ stream_copy_to_stream
);
2。开始第二个$ a.ajax();请求每个时间并尝试读取当前文件大小,直到下载过程结束;
不幸的是,这不能按预期工作。两个请求都正确,但只有在文件完全传输后才能读取文件大小。所以我在过程结束时得到了所有警报信息而不是同时
我想我正在做一些无法做到的事情?或者我只是遗漏了什么?
伪代码:
var uploadStart = 0;
function startUploadProgressBar(file) {
var file = file;
uploadStart = setInterval(function() {
$.ajax({
data: 'uploadProgress=1&file=' + file,
success: function(json) {
alert(json.filesize)
}
});
},
1000);
}
$('#submit').click(function() {
var file = somevar;
startUploadProgressBar(file);
$.ajax({
success: function(json) {
clearInterval(uploadStart);
}
});
return false;
});
答案 0 :(得分:1)
只是为了通过ajax上传文件,你可以考虑使用jQuery表单插件。据我所知,它支持进度条。
如果您想坚持自己的方法,请仔细阅读PHP手册中function's manual page的注释。有些替代方案可以修改输出转移状态。
答案 1 :(得分:0)
为什么不让PHP页面使用filesize()返回文件本身的大小?这样你就不需要反复轮询了。