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

2024-03-10

我使用 uploadifive(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(尽管效率非常低),因为它们对用户来说是不可见的,但是 6 次返回 1,每个返回都会生成一条警告消息,用户必须对此做出响应。
我不知道为什么会发生这种情况。看过 uploadifive 代码,但它远远超出了我对 jQuery 的有限知识。
感谢任何意见/建议/治疗/等
提前发送


我在测试过程中也遇到了这个问题。我通过修改源代码解决了这个问题...您必须寻找注释“// Loop through the files”才能找到它的位置。基本上,我只是运行两个循环......一个用于检查,另一个用于上传以避免冲突。

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

当然希望我有办法向作者提供其他修复,但他的论坛已关闭,他无法联系他。我只想说,这不是我遇到的唯一问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 uploadive 进行多个文件上传会导致重复调用 check_exists 的相关文章

  • Google 登录回调 - 获取姓名和电子邮件

    我试图在登录时将基本的谷歌帐户信息 姓名 电子邮件 ID 捕获到数据库中 我通过为他们的个人资料信息设置变量并通过 AJAX 更新数据库来做到这一点 参见下面示例中的变量 if authResult access token The use
  • 无需源代码即可部署网站

    我用php开发了网站 我想在没有源代码的情况下部署它 用php可以吗 我可以将网站代码转换为某种中间形式然后进行部署吗 您可以使用 Zend Guard 来编码您的代码 这样它就无法被逆向工程 http www zend com en pr
  • JavaScript 附加和前置与 jQuery 附加和前置

    QA Style 我最近读了一篇文章 里面说JavaScript已经实现了append and prepend受 jQuery 启发的方法 这对我来说是一个新知识 因为据我所知 要附加一个元素 我必须使用element appendChil
  • jQuery 自动完成/Twitter Typeahead 填充多个字段

    我目前正在使用 TypeAhead Bootstrap 但很高兴使用 jQuery Autocomplete 来完成我需要的事情 我有 5 个输入字段 我还有一个结构如下的表 因此我将使用远程数据源 Classification Model
  • 如何在延迟加载期间在图像占位符顶部显示“正在加载”gif 图像

    我正在使用这个 jQuery 插件来延迟加载我的图像 惰性加载器 http www appelsiini net projects lazyload 它运行良好 我只想在所有尚未加载的图像之上显示一个 正在加载 图像 可能是 gif 当图像
  • 我可以使用 javascript 生成 JSON 文件吗?

    我想在域 example1 com 上创建一个页面 并获取 解析另一个域 example2 com json json 上的 JSON 文件 可以使用 javascript 生成 json 文件 在 example2 com 上 吗 我认为
  • jQuery() 与 jQuery.parseHtml() 空格语法错误

    我有一行 javascript 导致 jQuery 中出现语法错误 document find Container replaceWith data find Content 代码本身如果相当无害的话 它所做的只是从 ajax 调用获取响应
  • 如何在全日历中显示从数据库中获取事件的时间

    你好朋友在我的应用程序中 我真的制作了一个弹出页面 它在数据库中插入事件 并从数据库中获取事件 但事件没有按时间显示数据 读取有一系列事件 其中包含 eventid eventtitle start end 和格式类似数组 id 10 ti
  • 如何将 php 变量传递给 ajax

    我有一个自动加载页面 我需要能够基于变量检索数据 因为该变量必须返回特定值 下面的代码基于检索所有数据 但我只需要基于 list 的少数数据 Page php
  • onchange 下拉列表

    我的问题是我所问问题的延续 请参阅链接 加载国家 州 城市 https stackoverflow com questions 2640001 load country state city 我已经展开以从数据库加载我的下拉列表 我只需要一
  • 将事件绑定到动态添加的元素

    我正在尝试使用 jquery 将函数绑定到新添加的元素 我已经尝试了很多在线示例 但不知怎的 没有任何效果对我有用 我创建了一个带有 id 和一个按钮的表单 在提交 ajax 时从另一个页面加载元素并在当前网站上插入 html 一切似乎都工
  • 提交表单而不重定向

    我想提交表单而不重定向页面 表单已提交给第三方 因此我无法在 php ini 中进行更改 我想做的是 无需访问第三方页面即可提交 成功提交后显示警报 目前我正在使用隐藏的 iframe 和表单目标来隐藏 iframe 但我不满意 有没有更好
  • 如何使用 jquery live 停止事件冒泡?

    我试图停止一些事件 但 stopPropagation 不适用于 实时 所以我不知道该怎么做 我在他们的网站上找到了这个 现场活动不会在 传统方式 不能 使用 stopPropagation 停止或 停止立即传播 例如 以两次点击事件为例
  • Javascript:for 与 jQuery.each() 带时间延迟

    Figure 1 for var i Things length 1 i gt 0 i setTimeout function do something with Things i 200 i Figure 2 things each fu
  • 为什么我无法将动态事件处理程序附加到该元素?

    My code http jsfiddle net arEWv 7 HTML div style width 500px height 500px div div div
  • 如何使整个 jqGrid 禁用/只读

    如何使整个 jqGrid 禁用 只读 我有一个带有逻辑 编辑部分 的页面 当用户选择要编辑的内容时显示该页面 并在用户完成编辑 保存或取消 时隐藏该页面 显示编辑部分时 我禁用了页面上的几个其他元素 我想禁用他们在 jqGrid 中单击的能
  • jQuery - 禁用选定的选项

    需要使用 jQuery 禁用选择框中已选择的选项 我希望它变灰 就像汇编选择 http www ryancramer com projects asmselect examples example1 html 测试我的例子here http
  • 如何在 jQuery 中使用特定值来定位特定属性? [复制]

    这个问题在这里已经有答案了 我试图解决的问题是 编写函数newMessage 该函数接收主题名称作为参数 函数应将 p 标签的背景颜色更改为红色 其中数据主题名称为 topicName 例如 如果 HTML 是 div p General
  • 从 HTML 文件输入中删除“所有文件”选项

    我在用
  • JQuery IE 绑定此

    在 IE 中 我使用 JQuery 在控制台中收到此错误 SCRIPT438 对象不支持属性或方法 绑定 default js 第 33 行字符 3 get URL dashboard photoList categoryID functi

随机推荐