通过ajax请求上传文件时读取文件大小

时间:2011-11-05 23:31:47

标签: php jquery ajax upload filesize

我正在尝试以这种方式上传文件的文件大小

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;
});

2 个答案:

答案 0 :(得分:1)

只是为了通过ajax上传文件,你可以考虑使用jQuery表单插件。据我所知,它支持进度条。

如果您想坚持自己的方法,请仔细阅读PHP手册中function's manual page的注释。有些替代方案可以修改输出转移状态。

答案 1 :(得分:0)

为什么不让PHP页面使用filesize()返回文件本身的大小?这样你就不需要反复轮询了。