3

(HTML5ファイルAPI、スライス、XmlHttpRequest2を使用して)ファイルのチャンクをアップロードし、進行状況をユーザーに報告しようとしています。

私が抱えている問題は、進行状況イベントが通常(チャンクサイズが5MBの場合でも)ほぼ即座に発生し、「ロードされた」値がチャンクのサイズに等しいことです。もちろん、チャンクがアップロードされるまでに30秒かかる場合があります。その間、ユーザーはフィードバックを受け取りません。

誰かが助けてくれるなら、以下のコード?私はほとんど文字通りこれで髪を引き裂いてきましたが、同じ問題に遭遇した人を見つけることができません!...

var startPosition = (partNumber - 1) * PART_SIZE;
var blob;

if (typeof fileUpload.File.slice != "undefined")
{
    blob = fileUpload.File.slice(startPosition, startPosition + contentLength);
}
else
{
    if (typeof fileUpload.File.webkitSlice != "undefined")
        blob = fileUpload.File.webkitSlice(startPosition, startPosition + contentLength);

    if (typeof fileUpload.File.mozSlice != "undefined")
        blob = fileUpload.File.mozSlice(startPosition, startPosition + contentLength);
}

fileUpload.PartNumber = partNumber;



        var xhr = new XMLHttpRequest();            

        // Add event listener for progress
        xhr.upload.onprogress = function (event) 
        {
            log.debug("progress " + event.loaded);

            if (event.lengthComputable)
                UpdateProgress(fileUpload, event.loaded);
        };            

        xhr.open("PUT", url, true);

        xhr.setRequestHeader('authorization', result);

        // Make the request an HTTP PUT
        log.debug('Sending PUT request to ' + url);
        xhr.send(blob);
4

1 に答える 1

0

答え - コードに問題はありません。私の PC に何か問題があります。別のコンピューターの同じブラウザーで問題なく動作します。

于 2012-10-16T19:01:23.203 に答える