我正在尝试上传大小为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的情况下上传,一切顺利。
答案 0 :(得分:23)
你使用dropzone.js版本> = 4.4.0和ajax请求吗?
如果是,则必须在配置中设置timeout
(以毫秒为单位)。它为xhr(ajax)请求指定超时值,默认值仅为30秒。
答案 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",
});