В Safari 11/12 у меня есть тег с href = "data:" и атрибутом "download", чтобы сохранить файл при нажатии на ссылку.
<!DOCTYPE html>
<html><body>
<a href="data:text/plain;charset=utf-8,Hello" download="hello.txt">
Click me
</a>
</body></html>
Это прекрасно работает в Chrome и Firefox, а также на закрепленной вкладке в Safari. При нажатии на ссылку текст «Hello» загружается в новый файл с именем hello.txt. Однако в закрепленной вкладке в Safari атрибут загрузки, похоже, игнорируется, и Safari открывает данные в новой вкладке.
Чтобы увидеть это, вам нужно отправить приведенный выше HTML-код с веб-сервера. Если вы просто сохраните файл и откроете его с URL-адресом «file: //», он будет работать как положено.
Я пытался использовать Blob вместо этого, но поведение было таким же.
Я попытался изменить mimeType на «application / octet-stream», что я и нашел в ответе на аналогичный вопрос. Это делает причиной загрузки данных, но имя файла всегда равно unknown.txt. Это не подходит, так как мне нужно контролировать имя файла и расширение (это не hello.txt!)
Как дополнительное примечание, поведение на самом деле отличается в Safari 11 и 12, но ни один из них не работает должным образом. В 11 данные открываются в новой вкладке. В 12 он открывает новую вкладку, но показывает ошибку при открытии данных.
Для меня это похоже на ошибку в Safari. Кто-нибудь может предложить обходной путь?
Спасибо