HTML5的FileReader上传占据了浏览器的所有内存

时间:2015-03-24 00:10:06

标签: php jquery ajax html5 filereader

我开发了一个使用HTML5的FileReader,jQuery和PHP的上传应用程序。每次发送一个块时浏览器内存都会增加,直到达到“内存不足”错误。难道我做错了什么?这是我的剧本:

function startUpload(file){
    var freader = new FileReader();
    var chunkN = 1;
    var chunkSize = 1048576;
    var fileSize = file.size;
    var offset = 0;
    var totalChunks = parseInt(fileSize / chunkSize);

    if (fileSize % chunkSize != 0) {
        totalChunks++;
    }

    var sendChunk = function(e){
        if (e.target.readyState == FileReader.DONE) {
            var result = e.target.result;
            var fd = new FormData();

            fd.append('file', result);

            $.ajax({
                url: 'ajaxr/upload.php',
                type: 'post',
                data: fd,
                timeout: 10000,
                cache: false,
                processData: false,
                contentType: false,
                success: function (r) {
                    if (chunkN < totalChunks) {
                        chunkN++;
                        setTimeout(function() { createChunk(); }, 1000);
                    }
                }
            )};
        }
    }

    function createChunk() {
        offset = (chunkN - 1) * chunkSize;
        var blob = file.slice(offset, chunkSize + offset);

        freader.onload = sendChunk;
        freader.readAsDataURL(blob);
    }

    createChunk();
}

0 个答案:

没有答案