Во-первых, предупреждение: 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 все равно покажет файл.