使用Uploadify限制上传次数

时间:2011-09-13 12:07:52

标签: javascript jquery uploadify

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

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

截至目前,我们有“queueSizeLimit”,以便他可以将文件max上传到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>

1 个答案:

答案 0 :(得分:0)

由于重新加载页面后uploadify队列再次为空,您可能需要考虑使用Cookie在本地存储用户已上载的文件数量。在初始化uploadify之前,您需要检查用户已完成的上传量。如果未设置Cookie或Number为0,则可以毫无问题地初始化uploadify。如果Number> 0但是<20,则必须调整uploadify的queueSizeLimit以确保用户不上传超过20个文件。如果该数字>&gt; = 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
        }
    });
}