Использование Uploadify для ограничения количества загрузок - PullRequest
0 голосов
/ 13 сентября 2011

Я хотел бы знать, как ограничить загрузку пользователя после определенного количества загрузок .. Я хочу, чтобы пользователь не загружал более 20 файлов. После этого мне нужно отключить Uploadify.

И если он снова очищает закачки, его нужно снова включить.

На данный момент у нас есть "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 голосов
/ 13 сентября 2011

Поскольку очередь загрузки снова пуста после перезагрузки страницы, вы можете рассмотреть возможность использования файлов cookie для локального хранения количества файлов, которые уже загружен пользователем.Прежде чем инициализировать uploadify, вы проверяете, сколько загрузок уже было сделано пользователем.Если Cookie не установлен или Число равно 0, вы можете без проблем инициализировать загрузку.Если число> 0, но <20, необходимо настроить queueSizeLimit для uploadify, чтобы убедиться, что пользователь не загружает более 20 файлов.Если число> = 20, вы даже не инициализируете uploadify.

Функция Oncomplete uploadify должна добавить количество только что загруженных файлов к номеру 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
        }
    });
}
...