Действия по воспроизведению ошибки в Safari 11:
- Создайте папку с кириллическими буквами в названии, например "русский_язык"
- Добавьте несколько файлов в папку
- Откройте https://blueimp.github.io/jQuery-File-Upload/ в Браузер Сафари 11.1
- Загрузить файл из этой папки
Фактический результат: файл не был загружен.
Чтобы лучше понять, посмотрите видео для Safari 11: https://drive.google.com/open?id=16tU8iBn0U9bUs7u5pM4ZBXmxpfJIv8WV
Попробуйте загрузить тот же файл, но используйте Safari 10.
Фактический результат: все хорошо, файл загрузился без проблем.
Чтобы лучше понять, посмотрите видео для Safari 10: https://drive.google.com/open?id=1IO--Y1RjETAYAucaNyqhM6HZcQdNKDkI
Обновление от 28.05.2018 После нескольких часов дебаггинга через crossbrowsertesting.com (потому что у меня нет сафари) я нашел временное решение: в этой строке https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js#L1182 необходимо заменить
entries = fileInput.prop('webkitEntries') || fileInput.prop('entries')
to
entries = []
И все должно работать.
Я предполагаю, что это произошло потому, что Apple добавила в сафари экспериментальную функцию - FileSystemEntry. Подробнее об этой функции https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry.
Если переменная entries
будет пустой, jquery.fileupload.js будет использовать проверенный атрибут files
для получения загружаемых файлов. Посмотрите код https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js#L1189 для более подробной информации.
Также я сообщаю об ошибке в Safari и Себастьяну Чану (автору этой библиотеки)