Файл Dropzone не полностью обработан при вызове processFile(File)
Я создаю Dropzone программно в моем приложении Meteor, и вместо того, чтобы публиковать файлы на URL, я сохраняю их в своей MongoDB с CollectionFS / GridFS и вызываю processFile(File) для каждого, перебирая массив getQueuedFiles, например так:
dz.getQueuedFiles().forEach(function(element) {
Images.insert(element, function(err, fileObj){
if (err){
alert("Erreur!");
} else {
var imageId = fileObj._id;
arrayOfImageIds.push(imageId);
dz.processFile(element);
}
})
Все идет хорошо, пока размер файла не станет больше. Затем каким-то образом индикатор выполнения застревает на полпути, и processFile никогда не завершается (и очередь не очищается). Даже когда я просто изолирую dz.processFile(элемент) и закомментирую БД, запись файла зависает в клиенте.
Это моя установка Dropzone:
Template.logoUpload.onRendered(function (){
Dropzone.autoDiscover = false;
dz = new Dropzone("form#dropzone", {
dictDefaultMessage : "DROP YOUR LOGO HERE",
autoProcessQueue: false,
addRemoveLinks: true,
dictRemoveFile: "Delete",
maxFiles: 2,
maxFilesize: 5,
maxThumbnailFilesize: 5,
accept: function(file, done){
done();
},
init: function() {
this.on("addedfile", function(file) {
Session.set("files", this.files.length);
if (this.getAcceptedFiles().length > 1) {
alert("max 2 files allowed");
this.removeFile(file);
}
}),
this.on("removedfile", function(file) {
Session.set("files", this.files.length);
}),
this.on("queuecomplete", function(file, response){
console.log("SUCCESFULLY UPLOADED");
console.log(arrayOfImageIds);
Session.set("imageIds", arrayOfImageIds);
})
}
});
});
У кого-нибудь есть идеи, как это решить?
1 ответ
Вы пытались увеличить размер порции файла?
var imageStore = new FS.Store.GridFS("images", {
chunkSize: 1024*1024 // optional, default GridFS chunk size in bytes (can be overridden per file).
// Default: 2MB. Reasonable range: 512KB - 4MB
});
Images = new FS.Collection("images", {
stores: [imageStore]
});