【问题标题】:Using Uploadify to restrict number of Uploads使用 Uploadify 限制上传数量
【发布时间】:2011-09-13 12:07:51
【问题描述】:

我想知道如何限制用户在上传一定次数后上传.. 我希望用户不要上传超过 20 个文件。之后我需要禁用 Uploadify。

如果他再次清除上传,则需要重新启用。

到目前为止,我们有“queueSizeLimit”,这样他就可以将文件最大上传到 queueSizeLimit。

这是我的代码:

    <script type="text/javascript">
        $('#file_upload').uploadify({
            'uploader': 'js/uploadify.swf',
            'script': 'UploadVB.ashx',
            'cancelImg': 'images/cancel.png',
            'folder': '/uploads',
            'queueSizeLimit':20,
            'multi': true,
            'auto': true,
            'onQueueFull': function (event, queueSizeLimit) {
                alert("I'm stuffed, please don't put anymore files in me!");
                return false;
            },
             'onComplete': function (event, ID, fileObj, response, data) {
                          $("#thumbnail").append(response + '&nbsp;')

           }
        });
</script>

【问题讨论】:

  • 20 个文件,每个用户的所有时间?
  • 是的,我只希望用户添加 20 个文件,并且不超过这个。而且我应该能够在添加 20 个文件后禁用。
  • 我想您的网站有一个数据库,那么您如何看待上传文件数量的字段?
  • 我没有任何数据库,允许用户上传图片和编辑试用版,所以我想给出一个限制。
  • 那么您如何识别您的用户?

标签: javascript jquery uploadify


【解决方案1】:

由于重新加载页面后uploadify队列再次为空,您可能需要考虑使用Cookies在本地存储用户已经上传了多少文件。在初始化 uploadify 之前,您检查用户已经完成了多少次上传。如果没有设置 Cookie 或 Number 为 0,则可以毫无问题地初始化 uploadify。如果 Number 大于 0 但小于 20,则必须调整 uploadify 的 queueSizeLimit 以确保用户上传的文件不超过 20 个。如果数字 >=20,你甚至不初始化uploadify。

uploadify 的 Oncomplete 功能必须将刚刚上传的文件数加上 cookie 数。

这不是万无一失的方法,但它很容易实现。有一个你可以使用的 jQuery cookie 插件。 https://github.com/carhartl/jquery-cookie

如果您真的想确保每个用户最多可以上传 20 个文件,则必须使用服务器端脚本来完成。

编辑:最后,你会得到这样的东西。请注意,这是伪代码,而不是实际的 javascript。

uploadedFiles = cookie.get(cookieName);
maxFiles = 20 - uploadedFiles;
if (maxFiles <= 0) { doNothing(); } // already 20 uploads or more
else {
    $('#file_upload').uploadify({
        // ...
        'queueSizeLimit': maxFiles, // if uploadedFiles is 5, maxFiles is 15 etc
        // ...
        'onComplete': function (...) {          
            myNumber++; 
            cookie.set(cookieName, uploadedFiles); // Count up number and save it in the cookie
        }
    });
}

【讨论】:

  • 感谢您的回复,我认为我们只能给出绝对值,但不能给出>0
  • 是的,但是您可以事先检查您需要的绝对值。有关伪代码示例,请参见上面我编辑的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多