Javascript Dropzone.js-防止将空文件上载到服务器

Javascript Dropzone.js-防止将空文件上载到服务器,javascript,jquery,file-upload,dropzone.js,Javascript,Jquery,File Upload,Dropzone.js,我知道Dropzone支持将文件大小限制为一定数量的MB(通过maxFilesize),但是有没有办法添加minFilesize?这是因为我不希望空文件到达服务器 我知道这就是插件的要点,它决定了在文件太大的情况下如何处理文件: Dropzone.prototype.accept = function (file, done) { if (file.size > this.options.maxFilesize * 1024 * 1024) {

我知道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
场景,但我不想参与插件的代码,如果可能,我只想通过插件引发的事件在“外部”执行此操作

这是可能的吗?

根据,类似这样的事情应该可以做到:

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(); }
  }
};
根据我们的观点,类似这样的事情应该可以做到:

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(); }
  }
};

下面的代码对我来说很好。但是当参数maxFilesize:500与accept函数一起使用时,它会给我不可预知的结果,因此,如果您与accept函数一起使用,请删除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
});
此接受函数不会阻止为我向dropbox添加文件。我可以提出另一种解决方案。我们可以向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;
}
}

希望这对别人有帮助

下面的代码对我来说很好。但是当参数maxFilesize:500与accept函数一起使用时,它会给我不可预知的结果,因此,如果您与accept函数一起使用,请删除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
});
此接受函数不会阻止为我向dropbox添加文件。我可以提出另一种解决方案。我们可以向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;
}
}

希望这对别人有帮助

看看这里的“Bieber”示例:看看使用
file.size
条件是否会奏效。是的,在回调中处理它似乎就可以了。谢谢。看看这里的“Bieber”示例:看看使用
file.size
条件是否会奏效。是的,在回调中处理它似乎就可以了。谢谢