Пользователь загружает лист Excel - тип файла - application / octet-stream - PullRequest
0 голосов
/ 27 октября 2018

У меня запущено веб-приложение с интерфейсом laravel, где пользователи загружают электронные таблицы Excel, которые затем сохраняются в формате base64 в базе данных. В основном это работает нормально, и файл сохраняется, как:

data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAAA

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

data:application/octet-stream;base64,UEsDBBQACAgIAGVKWk0AAAAAAAAAAAAAA

Если я загружаю ее файлы, они выглядят как совершенно нормальные листы Excel, а если я загружаю их снова, даже не открывая, они загружаются в виде электронных таблиц XML.

С чего начать поиск проблемы? На каком этапе определяется эта кодировка? Загружающая ОС, загружающий браузер или Laravel могут что-то делать за кулисами? Я не эксперт по Laravel.

1 Ответ

0 голосов
/ 29 октября 2018

Как указал @ourmandave, в браузерах нет 100% надежного способа определения типа MIME: Типы MIME из браузеров

В этом случае пользователь загрузил Google Sheetс Google Диска на Chromebook (как .xlsx), а затем загрузил xls для меня.Файл в порядке (и его можно интерпретировать как файл .xlsx), но MIME-тип при запуске файла на разных устройствах Chromebook может быть:

data:application/octet-stream;base64

или просто

data:;octet-stream

Заключение: не слишком доверяйте типу MIME при загрузке файлов.

...