【发布时间】:2018-09-13 05:56:47
【问题描述】:
我正在使用 Dropzone 在 Laravel 中上传文件。这是配置
<script type="text/javascript">
Dropzone.options.dropzone =
{
maxFiles: 50,
maxFilesize: 200,
parallelUploads: 10,
uploadMultiple: true,
addRemoveLinks: true,
autoProcessQueue:false,//the true is tried as well
acceptedFiles: ".jpeg,.jpg,.png,.gif",
success: function (file, response) {
console.log(response);
},
error: function (file, response) {
return false;
}
};
</script>
这是表格
{!! Form::open([ 'route' => [ 'images.multiUpload' ], 'files' => true, 'enctype' => 'multipart/form-data', 'class' => ' py-5 dropzone px-1 text-center w-100', 'id' => 'image-upload' ]) !!}
{{csrf_field()}}
{!! Form::close() !!}
根据我在 processQueue function doesn't process all queued files #462 中看到的内容,听起来问题出在dropzone.js 的以下代码中
Dropzone.prototype.processQueue = function() {
var i, parallelUploads, processingLength, queuedFiles;
parallelUploads = this.options.parallelUploads;
processingLength = this.getUploadingFiles().length;
i = processingLength;
if (processingLength >= parallelUploads) {
return;
}
queuedFiles = this.getQueuedFiles();
if (!(queuedFiles.length > 0)) {
return;
}
if (this.options.uploadMultiple) {
return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
} else {
while (i < parallelUploads) {
if (!queuedFiles.length) {
return;
}
this.processFile(queuedFiles.shift());
i++;
}
}
};
所以我将此代码更改为以下代码(###### 附加到新行)
Dropzone.prototype.processQueue = function () {
var i, parallelUploads, processingLength, queuedFiles;
parallelUploads = this.options.parallelUploads;
parallelUploads = 20;//######
processingLength = this.getUploadingFiles().length;
i = processingLength;
if (processingLength >= parallelUploads) {
return;
}
queuedFiles = this.getQueuedFiles();
if (!(queuedFiles.length > 0)) {
return;
}
if (this.options.uploadMultiple) {
return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
} else {
console.log(queuedFiles.length);//######
while (queuedFiles.length > 0) {//######
i = 0;//######
while (i < parallelUploads) {
console.log(i);//######
if (!queuedFiles.length) {
return;
}
this.processFile(queuedFiles.shift());
i++;
}
}
}
};
如果我上传20 文件,console.log(queuedFiles.length); 显示20,console.log(i); 行显示从1 到20 的计数器,但它仍然上传 3 或 4 个文件,而不是所有文件。我能做什么?
【问题讨论】:
标签: javascript laravel dropzone.js