читать размер файла при загрузке через ajax-запрос - PullRequest
0 голосов
/ 06 ноября 2011

я пытаюсь прочитать размер файла при загрузке файла таким образом

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 ]

1 голос
/ 06 ноября 2011

Просто для загрузки файлов через ajax, вы можете рассмотреть возможность использования плагина форм jQuery.Насколько я знаю, он поддерживает индикаторы выполнения.

Если вы хотите придерживаться своего метода, прочитайте комментарии на странице руководства в руководстве по PHP.Существуют альтернативы, которые можно модифицировать, выводя состояния передачи.

0 голосов
/ 06 ноября 2011

Почему бы просто не дать странице PHP вернуть размер самого файла с помощью filesize () ? Таким образом, вам не нужно повторно опрашивать.

...