Javascript 将dropzone缩略图发送到服务器

Javascript 将dropzone缩略图发送到服务器,javascript,dropzone.js,Javascript,Dropzone.js,是否可以将生成的Dropzone.js缩略图发送到服务器 我已经尝试了“发送”事件,但无法访问缩略图: myDropzone.on('sending', function(file, xhr, formData) { }); Threre也是一个“缩略图”事件,但我无法访问formData: myDropzone.on('thumbnail', function(file, dataUrl) { }); 编辑 @米拉塔 我在dropzone.js文件中更改了一些内容: Drop

是否可以将生成的Dropzone.js缩略图发送到服务器

我已经尝试了“发送”事件,但无法访问缩略图:

myDropzone.on('sending', function(file, xhr, formData) {

});
Threre也是一个“缩略图”事件,但我无法访问formData:

 myDropzone.on('thumbnail', function(file, dataUrl) {

    });
编辑 @米拉塔 我在dropzone.js文件中更改了一些内容:

Dropzone.prototype._finished = function(files, responseText, e) {
  var file, _i, _len;
  for (_i = 0, _len = files.length; _i < _len; _i++) {
    file = files[_i];
    file.status = Dropzone.SUCCESS;
    file.fid = responseText;
    this.emit("success", file, responseText, e);
    this.emit("complete", file);
  }
  [...]
};
最后,我通过“成功”事件保存我的缩略图:


希望这有帮助

我也有类似的问题。”“发送”似乎是首先发生的,然后是在单独的线程上完成的“缩略图”。这意味着可以在上传完成之前或之后的任何时间点在后台生成缩略图。对我们来说并不理想

我们真正需要的是一种触发缩略图过程并在发送到服务器之前将其完成的方法,或者找出如何将缩略图作为辅助操作发送,并知道需要存储缩略图的记录


如果我想出来了,我会把它加在这里

直接在插件中进行更改是不正确的(在这种情况下,您不能更新插件或使用f.e.npm或bower包含它们)。您必须覆盖插件或尝试使用插件功能来解决问题(
Dropzone
提供了很多功能)

一个版本:

在plugin init上禁用
autoProcessQueue

autoProcessQueue: false
并在创建缩略图后处理图像队列:

myDropzone.on('thumbnail', function(file, thumb) {
    file.thumbnail = thumb;
    myDropzone.processQueue();
});
在发送图像之前,还应包括缩略图:

myDropzone.on('sending', function(file, xhr, formData) {
   formData.append('thumbnail', file.thumbnail);
});

因此,您不需要发出发送缩略图的附加请求,而是将其与原始图像一起发送。

我对此有问题,它90%的时间都能正常工作,但偶尔它会使用无效的base64将请求发送到服务器。可能浏览器仍然没有生成缩略图,请尝试在发送请求之前稍等:
setTimeout(function(){file.thumbnail=thumb;myDropzone.processQueue();},1000)
谢谢你的评论,我差点忘了这个评论。是的,我把它弄出来了,所以我现在有一个超时函数,在处理上传之前等待1s
myDropzone.on('thumbnail', function(file, thumb) {
    file.thumbnail = thumb;
    myDropzone.processQueue();
});
myDropzone.on('sending', function(file, xhr, formData) {
   formData.append('thumbnail', file.thumbnail);
});