如果条件不满足,如何在Dropzone.js中取消/中止上传?

net*_*djw 7 javascript jquery dropzone.js

我正在使用Dropzone.js上传文件.现在我想检查一个字段是否已填写,如果不是,则取消上传.

我的HTML代码:

<input type="text" name="title" id="title" placeholder="Type the title of the album">
<form action="file-upload.cgi" enctype="multipart/form-data" class="dropzone" id="dropzoneform"></form>
Run Code Online (Sandbox Code Playgroud)

我的jQuery代码:

Dropzone.autoDiscover = false;
$('.dropzone').dropzone({
    acceptedFiles: 'image/jpeg',
    init: function() {
        this.on('sending', function() {
            if ( $('#title').val().length > 0 ) {
                // just start automatically the uploading
            } else {
                // need a code to cancel the uploading
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

#title长度为0 时,如何取消上传?

Lal*_*hez 26

如果要完全删除文件,则接受的答案有效; 但是,如果您希望为用户提供尝试再次提交相同文件的选项而无需将其重新添加到dropzone,则需要更改有关文件处理方式的一些内容.

首先,初始化dropzone时需要将autoQueue属性设置为false:

$('.dropzone').dropzone({
    autoQueue: false,
    /* The rest of your configuration options */
});
Run Code Online (Sandbox Code Playgroud)

这可以防止Dropzone在用户添加后立即自动尝试上传每个文件.这意味着现在您必须使用以下函数以编程方式自己将文件排入队列:

 var yourDropzone = $('.dropzone');
 yourDropzone.on("addedfile", function(file) {
     if (/* some condition is met by your file */) {
         yourDropzone.enqueueFile(file);
     }
 }
Run Code Online (Sandbox Code Playgroud)

这样,无论何时用户选择要上载的文件,我们都可以检查是否满足某些任意条件.只有在这种情况下,我们才会将文件排入上传到服务器.

这种方法的优点是,现在我们可以实际选择何时上传文件,而不是在Dropzone尝试发送排队文件时尝试将其从队列中删除.

这也允许其他更高级的功能; 例如,为每个文件添加一个按钮,让用户选择何时尝试上传它.

  • 如果您收到错误“此文件无法排队,因为它已被处理或被拒绝。”使用选项“enqueueForUpload: false”和函数“yourDropzone.processFile(file)” (5认同)
  • 我不得不把这个事件监听器放在dropzone的"init"属性中,而是使用this.on("addedfile")代替.出于某种原因,在创建dropzone之后引用dropzone然后监听addedfile事件是行不通的. (2认同)

cod*_*aff 9

那这个呢

Dropzone.autoDiscover = false;
$('.dropzone').dropzone({
    acceptedFiles: 'image/jpeg',
    init: function() {
        var that = this;
        that.on('sending', function(file) {
            if ( $('#title').val().length <= 0 ) {
                that.removeFile(file);
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这不会或取消/中止如问题所问 (2认同)