2014-11-10 3 views
2

Я пытаюсь ограничить тип файла (только mp3-файлы), когда открываю диалог с загрузкой.Как ограничить тип файла загрузкой в ​​javascript?

 uploadcare.loadFileGroup(soundGroupID) 
     .done(function (fileGroup) { 
      uploadcare.openDialog(fileGroup.files(), { 
       multiple: true, 
       multipleMin: 0, 
       fileTypes="mp3" 
      }).done(
       function (file) { 
        file.promise().done(
         function (fileInfo) { 
          //TODO Something 
         }); 
       }); 
     }) 
     .fail(function() { 
      // Something went wrong. 
     }); 

Есть ли способ подтолкнуть валидатор? Есть ли способ получить доступ к виджету? Как вы можете видеть, я открываю диалог, поэтому я не могу получить доступ к виджету в любом месте.

+0

Если он передает параметр _accept_ в атрибут ввода файла, вы являетесь золотым. – dandavis

ответ

2

К сожалению, валидаторы для диалогов в текущем API отсутствуют, только для виджетов. Но вы можете создать поддельный виджет и использовать метод .openDialog().

uploadcare.loadFileGroup(soundGroupID) 
.done(function (fileGroup) { 
    var widget = uploadcare.MultipleWidget('<input data-multiple multiple-min="1">'); 
    widget.validators.push(function(info) { 
     if (info.name !== null) { 
      if (! /\.mp3$/i.test(info.name)) { 
       throw Error('mp3-only'); 
      } 
     } 
    }); 
    widget.openDialog(null).done(
     function (file) { 
      file.promise().done(
       function (fileInfo) { 
        //TODO Something 
       }); 
     }); 
}) 
.fail(function() { 
    // Something went wrong. 
}); 

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

Смежные вопросы