2012-05-29 3 views
3

Я интеграции plupload с моей ASP.NET приложения MVC3, со следующими параметрами:Как фильтровать типы файлов во время выполнения HTML5 в plupload?

var uploaderSettings = { 
    runtimes: "html5,silverlight,flash,html4", 
    browse_button: "browse-button", 
    container: "upload-ui", 
    drop_element: "drag-drop-area", 
    file_data_name: "file", 
    multiple_queues: true, 
    max_file_size: "10mb", 
    url: '@Url.Action("Index", "Upload")', 
    flash_swf_url: '@Url.Content("~/js/plupload/plupload.flash.swf")', 
    silverlight_xap_url: '@Url.Content("~/js/plupload.silverlight.xap")', 
    filters: [ 
     {title: "Excel Files", extensions: "xls,xslx,csv"} 
    ], 
    multipart: true, 
    urlstream_upload: true, 
    dragdrop: true, 
    multipart_params: { 
     token: "@AuthToken()" 
    } 
}; 

из которых plupload является генерирование <input type="file"> со следующими элементами в атрибуте accept (разделенные запятой):

  • application/vnd.ms-excel
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • text/csv

В Firefox 12.0 он игнорирует фильтр и позволяет выбирать любой тип файла.

В Chrome 21 он не работает с упомянутыми расширениями файлов, но если я изменю фильтр на файлы изображений (jpg, png, gif), он правильно фильтрует диалоговое окно «Выбрать файл».

Я нашел this issue на багтрекер Chromium, который, кажется, связаны, но был отмечен как фиксированный в октябре 2010 года

Если переключить приоритет выполнения для Silverlight или вспышки выше html5, она работает правильно, но я бы предпочел не делать этого, поскольку теряю функциональность загрузки файлов перетаскивания.

Это просто ограничение поддержки браузера атрибута accept, я делаю что-то неправильно или это ошибка в plupload?

UPDATE: похоже, что это known issue, и сводится к поддержке браузером для фильтрации типа mime.

+0

Принять это не HTML5 http://www.w3schools.com/tags/att_input_accept.asp, так что подумал бы, что он должен иметь более широкую поддержку! –

+0

Правда, это было с тех пор, как HTML2 - тем не менее, так много функций HTML5; HTML5 - это скорее стандартизация случайных особенностей, характерных для браузера. –

ответ

4

Похоже, что это не очень хороший способ проверки типов файлов.

accept attribute in input file is not working

Это только намекая ОС для фильтрации типов файлов в диалоговом окне.

Когда я сделал это с загрузкой PL, я сделал это на основе стороннего сервера.

0
filters: { 
      max_file_size: '100mb', 
      prevent_duplicates: true, 
      **mime_types:** [title : "Image files", extensions : "jpg,jpeg,gif,png"] 
     } 
+0

Хотя этот блок кода может ответить на вопрос, это был бы лучший ответ, если бы вы могли дать некоторое объяснение, почему оно это делает. – DavidPostill

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