虽然在Chrome.Getting Aw snap上频繁请求!错误

时间:2015-12-28 11:52:07

标签: ajax google-chrome jquery-file-upload

我正在使用chunk方法上传大文件。如果我向服务器上传最小号码请求正常工作。如果向服务器发出大量请求Chrome浏览器已经与Aw Snap崩溃了!错误消息。但其他浏览器正常工作,请求数量很多。

如何解决这个问题。有解决方法吗?是铬虫吗?

更新

下面的函数将切片文件,然后将chunk上传到服务器。上传所有块后。合并Api将合并块。

代码:

function readFile (file) {   

                var uploadBatchKey = this.guid;

                var start = 0; //Start Index
                var stop = file.size; //End Index
                var chunksize = (document.getElementById('chunkSize').value * 1048576);
                var index = this.chunkUploadIndex;
                var reader = new FileReader();
                var filecontent = null;

                var waitingInterval = null;
                var totalsegment = Math.ceil(stop / chunksize);
                var isPreviousChunkUpload = true;
                var match = ko.utils.arrayFirst(JSViewmodel.SelectedFiles(), function (item) {
                    return item.UploadManager == undefined ? false : (uploadBatchKey === item.UploadManager.guid);
                });
                match.UploadBatchKey(uploadBatchKey);

                var handle = setInterval(function () {

                    if (isPreviousChunkUpload) {

                        if (!match.IsUploading()) {                         
                            clearInterval(handle);
                        }
                        else if (index > totalsegment) {
                            isPreviousChunkUpload = false;
                            var filename = match.IsRelativePath() ? file.webkitRelativePath : file.name;
                            console.log(file.size);
                            var batchData = { uploadBatchKey: uploadBatchKey, fileName: filename, fileSize: file.size };
                            $.ajax({
                                url: "/Home/MergeChunk",
                                type: 'POST',
                                async: false,
                                data: batchData,
                                success: function (result) {
                                    debugger;
                                    console.log(result);
                                    if (result == "False")
                                        match.IsFailed(true);                                    
                                },
                                error: function (result) {
                                    console.log(result);
                                    debugger;
                                    match.IsFailed(true);
                                }
                            });

                            match.IsUploading(false);
                            match.IsCompleted(true);
                            clearInterval(handle);
                        }

                        start = (index - 1) * chunksize;
                        stop = (index * chunksize) - 1;
                        reader.onloadend = function (evt) {
                            if (evt.target.readyState == FileReader.DONE) { // DONE == 2
                                filecontent = evt.target.result;
                                var chunkContent = { chunkContent: window.btoa(filecontent), chunkIndex: index - 1, uploadBatchKey: uploadBatchKey };
                                console.log("onloadend" + chunkContent.chunkIndex);
                                $.ajax({
                                    url: "/Home/Upload",
                                    type: 'POST',
                                    async: false,
                                    data: chunkContent,
                                    success: function (result) {                                        
                                        match.Percentage(Math.round((chunkContent.chunkIndex / totalsegment) * 100));
                                        isPreviousChunkUpload = true;
                                    }
                                });                                
                            }
                        };                        
                        var blob = file.slice(start, stop + 1);
                        reader.readAsBinaryString(blob);
                        isPreviousChunkUpload = false;
                        console.log("file slice:" + index);
                        index++;
                        match.UploadManager.chunkUploadIndex = index;
                    }


                }, 500);
            }

0 个答案:

没有答案