如何只计算有效的jquery文件上传

How do I count only valid jquery file uploads?

本文关键字:jquery 文件 有效 计算      更新时间:2023-12-24

在使用jquery文件上传多次图像后,我正在尝试刷新上传页面。

我目前正在计算添加的文件数量,如果它们与成功上传的数量匹配,我会刷新页面。在用户尝试上传无效的文件类型或太小的图像之前,这种方法效果很好。我如何将这些失败作为总数的一部分?有没有首选的方法?

    $('#fileupload').fileupload({
        acceptFileTypes: /('.|'/)(jpe?g|png)$/i
    });
    var filesqueued = null; 
    var filesuploaded = 0;
    $('#fileupload').bind('fileuploadadd', function (e, data) {
        filesqueued = data.originalFiles.length;
    });

    $('#fileupload').bind('fileuploaddone', function (e, data) {
        filesuploaded = filesuploaded + 1;
        if (filesuploaded == filesqueued) {
            filesuploaded = 0;
            location.reload();
        }
    })

您可以使用jQuery文件上传的内置事件来绑定成功和失败事件:

$('#fileupload').bind('fileuploadcompleted', function (e, data) {
    /* Successful upload */
        filesuploaded = filesuploaded + 1;
});
$('#fileupload').bind('fileuploadfailed', function (e, data) {
    /* Failed upload */
    // [...]
});

更多信息,请参阅他们的文档:https://github.com/blueimp/jQuery-File-Upload/wiki/Options

或者,您可以在服务器端执行所有操作。让您的上传处理程序(jQuery文件上传的url选项)响应:

<?php
if ( $valid == false ) {
    echo 'invalid';
    // or echo( json_encode( array( 'result' => 'invalid' ) ) );
}

然后返回jQuery分析返回的数据:

$('#fileupload').bind('fileuploaddone', function (e, data) {
    /* Check returned data */
    // Could use JSON or simple text output
    // if ( data.result == 'invalid' ) {
    if ( data == 'invalid' ) {
        // file did not pass
    } else {
        // file uploaded fine
        filesuploaded = filesuploaded + 1;
    }
    if (filesuploaded == filesqueued) {
        filesuploaded = 0;
        location.reload();
    }
})