大文件上传 - 请求被取消

时间:2017-06-13 03:53:44

标签: dropzone.js

我正在尝试上传大小为40-50mb的视频文件。如果我在Google Chrome上的“投放网络”标签中观察,进度条会在某个时间点冻结​​。请求被取消,没有错误,HTTP响应标头为空。

然而,这适用于大约10-15mb的图像/视频文件。

我的代码:

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", {
        maxFiles: 1,
        parallelUploads: 100,
        acceptedFiles: '.3gp,.3gp2,.h261,.h263,.h264,.jpgv,.jpm,.jpgm,.mp4,.mp4v,.mpg4,.mpeg,.mpg,.mpe,.m1v,.m2v,.ogv,.qt,.mov,.fli,.flv,.mks,.mkv,.wmv,.avi,.movie,.smv,.g3,.jpeg,.jpg,.jpe,.png,.btif,.sgi,.svg,.tiff,.tif',
        previewTemplate: previewTemplate,
        previewsContainer: "#previews",
        autoProcessQueue: false,
        clickable: ".fileinput-button",
    });

P.S:这不是服务器方面的问题,因为我尝试在没有Dropzone的情况下上传,一切顺利。

3 个答案:

答案 0 :(得分:23)

你使用dropzone.js版本> = 4.4.0和ajax请求吗?

如果是,则必须在配置中设置timeout(以毫秒为单位)。它为xhr(ajax)请求指定超时值,默认值仅为30秒。

来源:http://www.dropzonejs.com/#configuration

答案 1 :(得分:7)

第一步是检查服务器,因为有时nginx或其他服务器工具会查看文件大小的标题,并拒绝超过一定大小的文件。

如果服务器工作正常,但由于网络带宽问题。服务器现在仍然会发出需要由客户端处理的错误。超时发挥作用。

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone", {
        maxFiles: 1,
        timeout: 9000, /*milliseconds*/
        autoProcessQueue: false
});

myDropzone.on("sending", function(file, xhr, formData) {
  /*Called just before each file is sent*/
        xhr.ontimeout = (() => {
          /*Execute on case of timeout only*/
            console.log('Server Timeout')
        });
}

答案 2 :(得分:5)

它有一个超时,每当它超出时,请求被取消,只需要

超时:180000,

选项中的

这将是:

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", {
        maxFiles: 1,
        timeout: 180000,
        parallelUploads: 100,
        acceptedFiles: '.3gp,.3gp2,.h261,.h263,.h264,.jpgv,.jpm,.jpgm,.mp4,.mp4v,.mpg4,.mpeg,.mpg,.mpe,.m1v,.m2v,.ogv,.qt,.mov,.fli,.flv,.mks,.mkv,.wmv,.avi,.movie,.smv,.g3,.jpeg,.jpg,.jpe,.png,.btif,.sgi,.svg,.tiff,.tif',
        previewTemplate: previewTemplate,
        previewsContainer: "#previews",
        autoProcessQueue: false,
        clickable: ".fileinput-button",
    });