Fine-Uploader — проверка для каждого элемента Drag and Drop

Имея дело с Fine Uploader в течение последних 2 недель, я вижу из документации, что существует опция «проверки» для опции «extraButtons» для Fine Uploader. Это здорово, так как я могу ограничить определенные кнопки, чтобы разрешить только определенные расширения.

Однако мне было интересно, реализована ли проверка для параметра «dragAndDrop.extraDropzones».

Я не вижу этого в документации, и я попытался сделать несколько вещей, которые, как я думал, могут сработать случайно, но в конце концов не повезло.

Ваша помощь очень ценится.

Спасибо!

Привет, Томас

Обновить

Просто чтобы вы увидели, чем я занимался до сих пор, вот код, который у меня есть: http://jsfiddle.net/beamstyle_thomas/fyp5dqwt/5/

Я разрешаю файлы JPG проходить только по нажатию кнопки:

extraButtons: [
{
    element: $('.file-trigger')[0],
    validation: {
        allowedExtensions: ["jpg"]
    }
},

Но я не знаю, как ограничить перетаскивание... вот что у меня есть:

dragAndDrop: {
    extraDropzones: [ $('.file-trigger') ]
},

Несколько замечаний для проверки: - Попробуйте нажать «Тест 1», выберите файл, отличный от jpg. Это вызовет ошибку проверки, потому что я разрешаю только файлы "jpg". - Затем попробуйте перетащить файл, отличный от jpg (предположим, вы используете Chrome) в «Тест 1». Это действительно пройдет, потому что в настоящее время нет проверки.

Спасибо!


person Thomas Cheng    schedule 01.03.2015    source источник
comment
Вы не возражаете разместить копию вашего кода? Я хотел бы увидеть, что вы на самом деле пытаетесь сделать до сих пор...   -  person Dylan Corriveau    schedule 01.03.2015
comment
Привет, Дилан, обновлено. Пожалуйста, посмотрите. Спасибо!   -  person Thomas Cheng    schedule 01.03.2015


Ответы (2)


После беглого просмотра проблема заключается в том, откуда вы объявляете свою проверку.

Например:

extraButtons: [
{
    element: $('.file-trigger')[0],
    validation: {
        allowedExtensions: ["jpg"]
    }
},

говорит: «Всякий раз, когда нажимается дополнительная кнопка, и только когда нажимается дополнительная кнопка, подтвердите, что расширение в порядке».

Вместо того, чтобы определять проверку для каждой кнопки, определите ее на базовом уровне:

$(document).ready(function () {        
        $("#fine-uploader").fineUploaderS3({   
            validation: {
                allowedExtensions: ["jpg"]
            },
            ...
        });
    });

Вот ваша скрипка с ним

person Dylan Corriveau    schedule 01.03.2015
comment
Привет, Дилан, спасибо за твое сообщение. Возможно, мое сообщение было не слишком ясным. На самом деле я искал конкретную проверку для элементов drop. Поэтому я хочу разрешить расширение для одного элемента перетаскивания и другое расширение для другого элемента перетаскивания. У вас есть идеи, как это сделать? (Позвольте мне изменить тему, чтобы изложить это более четко) - person Thomas Cheng; 02.03.2015
comment
Вы можете проверить qqDropTarget объекта File в обработчике onSubmit и отклонить (вернуть false), если файл недействителен для этой конкретной зоны перетаскивания. - person Ray Nicholus; 02.03.2015
comment
@ThomasCheng Если я правильно понимаю, параметр allowExtensions — это просто массив, поэтому вы можете изменить массив для каждого. Например, если вы хотите, чтобы у одного были jpg и png, было [jpg,png], то у следующего могло быть только [jpg]. Это то, что вы искали? - person Dylan Corriveau; 02.03.2015
comment
@DylanCorriveau Параметры неизменяемы, поэтому это не сработает. Вам нужно будет использовать предложение, предложенное в моем предыдущем комментарии. - person Ray Nicholus; 02.03.2015
comment
@DylanCorriveau Согласно комментарию Рэя, да, это не совсем работает. Спасибо за предложение. - person Thomas Cheng; 02.03.2015
comment
@RayNicholus Я вижу, что есть обработчик onValidate. Будет ли это лучшим выбором? Я спрашиваю это только ради лучших практик. Спасибо Рэй! - person Thomas Cheng; 02.03.2015
comment
@RayNicholus Если это лучшая практика, то я все еще сталкиваюсь с проблемой внутри onValidate(), потому что я не могу получить идентификатор файла, кажется =-( - person Thomas Cheng; 02.03.2015
comment
@RayNicholus Извините за рассылку спама. Я немного огляделся. Наконец-то зашел в один из ваших старых постов. Похоже, нет никакого способа получить FileId в событии onValidate(), и поэтому вы предлагаете onSubmit(). Ваш старый пост - person Thomas Cheng; 02.03.2015
comment
Да, именно поэтому выше я предложил использовать обработчик onSubmit. - person Ray Nicholus; 02.03.2015

Хотя другие предложения были ценными, этот ответ от RayNicholus был правильным. Это было под комментарием, поэтому я публикую этот ответ здесь.

Вы можете проверить qqDropTarget объекта File в обработчике onSubmit и отклонить (вернуть false), если файл недействителен для этой конкретной зоны перетаскивания.

person Thomas Cheng    schedule 27.03.2015