javascript - 将拖放区缩略图发送到服务器

标签 javascript dropzone.js

是否可以将生成的 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);
  }
  [...]
};

我添加了“file.fid = responseText;”存储服务器响应(在我的例子中是 fileid)(应该位于 Dropzone.js v4 第 1356 行)。

第 309 行,“file.thumbnail = dataUrl;”

[...]
thumbnail: function(file, dataUrl) {
    var thumbnailElement, _i, _len, _ref;
    if (file.previewElement) {
      file.thumbnail = dataUrl;
      file.previewElement.classList.remove("dz-file-preview");

      [...]
    }
  },
[...]

最后我用“成功”事件保存缩略图:

myDropzone.on('success', function(file) {
    $.ajax({
        url: 'url',
        method: 'post',
        data: {
            fileId: file.fid,
            thumbnail: file.thumbnail
        }
    });
});

希望这有帮助!

最佳答案

直接在插件中进行更改不是正确的方法(在这种情况下,您无法更新插件或使用 npm 或 Bower 包含它们)。您必须覆盖插件或尝试使用插件功能解决问题(Dropzone 提供了大量 events )。

One version:

在插件初始化时禁用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);
});

因此,您无需发送额外的缩略图发送请求,而是将其与原始图像一起发送。

关于javascript - 将拖放区缩略图发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29534483/

相关文章:

javascript - 对包含长度值的数组进行排序

javascript - 为什么AudioBufferNode中的stop方法会破坏它?

javascript - Dropzone 未提供 URL/Dropzone 已附加

javascript - Django 和 Dropzone.js

javascript - dropzone.js 在 angularjs 局部 View 中不起作用

javascript - 使用箭头在我的画廊中导航时更改 URL 中的哈希值 (jQuery)

javascript - 如何注册 document.onkeypress 事件

javascript - 如何在 ReactJS 中为 API 中的每个渲染元素显示函数返回的不同值?

php - Dropzone 和非对象错误

javascript - 使用 jquery 及其选项的 dropzone