【问题标题】:Dropzone.js - prevent empty files from uploading to the serverDropzone.js - 防止空文件上传到服务器
【发布时间】:2015-08-27 08:44:14
【问题描述】:

我知道 Dropzone 支持将文件大小限制为一定 MB 的可能性(通过 maxFilesize),但有没有办法添加 minFilesize ?这是因为我不希望空文件到达服务器。

我看到这是插件中的一点,它决定了在文件太大的情况下如何处理文件:

Dropzone.prototype.accept = function (file, done) {
            if (file.size > this.options.maxFilesize * 1024 * 1024) {
                return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
            } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
                return done(this.options.dictInvalidFileType);
            } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
                done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
                return this.emit("maxfilesexceeded", file);
            } else {
                return this.options.accept.call(this, file, done);
            }
        };

我知道我可以在此处添加一个额外的 else if 来处理 minFilesize 场景,但我想远离插件的代码,并且如果可能,仅通过插件发出的事件在“外部”执行此操作.

这可能吗?

【问题讨论】:

  • 看看这里的“Bieber”示例:dropzonejs.com/#configuration 看看使用file.size 条件是否可以解决问题。
  • 是的,在那个回调中处理它似乎可以做到。谢谢。

标签: javascript jquery file-upload dropzone.js


【解决方案1】:

根据http://www.dropzonejs.com/#configuration,应该这样做:

Dropzone.options.myAwesomeDropzone = {
  paramName: "file", // The name that will be used to transfer the file
  maxFilesize: 2, // MB
  accept: function(file, done) {
    if (file.size == 0) {
      done("Empty files will not be uploaded.");
    }
    else { done(); }
  }
};

【讨论】:

    【解决方案2】:

    以下代码对我来说很好。但是当参数 maxFilesize: 500 与接受函数一起使用时,它会给我带来不可预知的结果,因此如果您将 maxFileSize 参数与接受函数一起使用,请删除它。

    var emojiCustomizationDropzone = new Dropzone("#emojiCustomizationDropBox", {
    paramName: "images",
    accept: function(file, done) {
        if (file.size == 0) {
            done("Sorry, Your file is empty, Nothing to upload");
            return;
        } else if (file.size > MAX_UPLOAD_FILE_SIZE) {
            done("Sorry, Your file is too large to upload, Maximum file size is 500KB");
        }else {
            done();
        }
    },
    url: sampleURL,
    uploadMultiple: true,
    autoProcessQueue: false,
    method: "POST",
    enctype: "multipart/form-data",
    headers: {
        contentType: false,
        processData: false,
        authorization: "Bearer " + $.cookie("Access_token")
    },
        parallelUploads: 1,
        maxFiles: 1
    });
    

    此接受功能不会阻止我将文件添加到保管箱。我可以为此提出另一种解决方案。我们可以在 onaddedfile 方法中添加我们喜欢的条件。如果文件不匹配,我们可以使用 dropzone 中的 removeFile 方法将其从相应的 dropzone 中删除。

    emojiCustomizationDropzone.on("addedfile", function (file) {
    if (file.size == 0) {
        emojiCustomizationDropzone.removeFile(file);
        return;
    }
    if (file.size > MAX_UPLOAD_FILE_SIZE) {
        emojiCustomizationDropzone.removeFile(file);
        return;
    }
    }
    

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 2013-11-20
      • 1970-01-01
      • 2017-02-25
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      相关资源
      最近更新 更多