Использование FileSaver.js в Safari - PullRequest
0 голосов
/ 22 февраля 2019

Я использую FileSaver.js для загрузки изображения на стороне клиента с помощью FileSaver.js.Хорошо работает в Chrome и IE11.Но в Safari 11.1 (а мне понадобится поддержка 12+) изображение (.png или .jpg) загружается, но не открывается, и ОС жалуется на поврежденный файл или неподдерживаемый тип файла.

Моя загрузка выглядит так:

fileName = Ext.isIE || Ext.isSafari ? fileName + fileExtension : fileName;
saveAs(new Blob([file], { type: contentType }), fileName);

(saveAs не добавляет расширения файлов в IE11 или Safari, следовательно, добавляется fileExtension)

В любом случае, файл представляет собой строку svg и contentTypeэто либо «изображение / PNG» или «изображение / JPEG».Я также попробовал следующие настройки: добавление "; charset = utf-8" к contentType, который не помогает.добавив «data:» для создания dataURL, но я уверен, что FileSaver.js должен справиться с этим.

Я читал, что, возможно, возникла проблема с проверкой, является ли браузер Safari в FileSaver.js, поэтому я вошел в исходный код FileSaver.js и изменил проверку на Ext.isSafari (используя ExtJs 6).Не помоглоЯ в тупике.

Буду признателен за любую помощь, спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Конечно, проблема не была с FileSaver.js.Это даже не было связано с браузером, это была ОС.

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

Я мог бы воссоздать это, загрузив файл svg срасширение .svg, убедитесь, что оно нормально открывается на Mac, а затем измените расширение на .png и увидите, что я получил то же сообщение об ошибке.Я думаю, что Windows просто более щадящая.

...