Загрузите файл, изменив window.location с Safari - PullRequest
5 голосов
/ 15 марта 2012

У меня есть автономный html-файл, который генерирует и сохраняет CSV, установив для window.location значение

data:text/csv;base64,Intfa2V5fSIsInt...

Однако в Safari это просто вызывает CSV в браузере.

Установка URL-адреса:

data:application/csv;base64,Intfa2V5fSIsInt...

заставляет Safari загружать файл - но он получает общее имя файла, равное «Unknown-3».Есть ли способ указать имя файла?

Ответы [ 2 ]

6 голосов
/ 15 марта 2012

Во-первых, предупреждение: application/csv не является действительным MIME-типом , поэтому тот факт, что он «работает» для вас в этом случае, является просто особенностью реализации, которая вполне может измениться вбудущее.(Например, Safari отображает application/octet-stream, который я ожидаю загрузить.)

HTML5 действительно имеет атрибут new <a download="file.name"> .Это заставляет браузер загружать файл на диск;он использует значение атрибута в качестве имени файла по умолчанию.Он работает в сочетании с URI данных или blob URI.( Демо )

Однако в настоящее время он поддерживается только Chrome (14+).Safari 5.1 игнорирует атрибут.


Возможной альтернативой является использование API файловой системы , но это дает вам изолированную папку для работы.Вы не можете, например, сохранить файл непосредственно в папку «Документы» пользователя.Вместо этого вы можете записать файл в песочницу и затем перенаправить в файл в новой схеме filesystem:

location.assign('filesystem:http://example.com/temporary/somefile.csv');

Это должно вызвать механизм загрузки UA (с правильным именем файла!), Но у меня нетне проверял это, поэтому возможно, что Safari все равно покажет файл.

0 голосов
/ 15 марта 2012

Согласно RFC 2397 нет.Нет пути.

Также прочитайте этот связанный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...