使用uploadifive进行多文件上传会导致重复调用check_exists



Am使用uploadive(HTML5版本而非基于Flash的uploadify)如下:

$('#file_upload').uploadifive({ //setup uploadify
    'auto'             : false,
    'removeCompleted'  : true,
    'checkScript'    : 'check-exists.php',
    'formData'         : {
                              'timestamp' : '<?php echo $timestamp;?>',
                              'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
                         },
    'queueID'          : 'queue',
    'uploader'         : 'uploadifive.php',
    'onUploadFile'     : function(file) {
                            //alert('The file ' + file.name + ' is being uploaded.');
                         },
    'onCheck'          : function(file, exists) {
                           //alert ('onCheck: ' + file.name + '/' + exists);
                         },
    'onUploadComplete'  : function(file, data) { 
                          //alert (file.name + ': ' + data); 
                         }
});

使用这种简单的形式:

<form>
    <div id="queue"></div>
    <input id="file_upload" name="file_upload" type="file">
    <a style="position: relative; top: 8px;" href="javascript:$('#file_upload').uploadifive('upload')">Upload Files</a>
</form>

如果我把一个或两个文件加载到一个空文件夹中,一切都会很好
如果我加载3个或更多,我会得到对check_info.php的不同次数的重复调用。例如,如果我将五个文件上传到一个空文件夹中,根据firebug的说法,有15个对check_info的调用
文件1为1,返回0(即文件不存在)
文件2为2,两者都返回0
3对于文件3,全部返回0
4对于文件4,1返回0,3返回1(即文件存在)
文件5为5,2返回0,3返回1
我可以接受0的多次返回(尽管效率很低),因为它们对用户来说是不可见的,但1的6次返回,每个返回都会生成一个警告消息,用户必须对此做出响应
我不知道为什么会发生这种事。我看过上传的代码,但它远远超出了我对jQuery的有限了解
感谢任何建议/建议/治疗方法等
Tx提前

我在测试过程中也遇到了这种情况。我通过修改源代码解决了这个问题。。。您必须查找注释"//循环浏览文件"才能找到它的位置。基本上,我只运行两个循环。。。一个用于检查,另一个用于上传以避免冲突。

// Loop through the files to run check scripts first...
if (settings.checkScript) {
    $('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').each(function () {
        _file = $(this).data('file');
        if (typeof _file.skipFile === 'undefined') {
            _file.skipFile = $data.checkExists(_file);
        }
    });
}
// Loop through the files for uploading...
$('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').each(function() {
    _file = $(this).data('file');
    // Check if the simUpload limit was reached
    if (($data.uploads.current >= settings.simUploadLimit && settings.simUploadLimit !== 0) || ($data.uploads.current >= settings.uploadLimit && settings.uploadLimit !== 0) || ($data.uploads.count >= settings.uploadLimit && settings.uploadLimit !== 0)) {
        return false;
    }
    if (!_file.skipFile) {
        $data.uploadFile(_file, true);
    }
});

我当然希望我能找到一种方法来修复作者的其他问题,但他的论坛已经关闭,他没有办法联系他。可以说,这并不是我唯一的问题。

相关内容

  • 没有找到相关文章

最新更新