Я интегрирую plupload со своим приложением ASP.NET MVC3 со следующими настройками:
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), он правильно отфильтрует диалоговое окно «Выбрать файл».
Я нашел эту проблему в системе отслеживания ошибок Chromium, которая, похоже, быть связанным, но был помечен как исправленный еще в октябре 2010 года.
Если я переключаю приоритет времени выполнения на silverlight или flash выше html5, он работает правильно, но я бы не стал этого делать, так как я теряю функцию загрузки файлов с помощью перетаскивания.
Это просто ограничение поддержки браузером атрибута accept, я что-то не так делаю или это ошибка в plupload?
ОБНОВЛЕНИЕ: похоже, что это известная проблема, и она кипит вплоть до поддержки браузером фильтрации mime-типа.