Сохранить файл Javascript с именем файла
Я работаю над текстовым редактором в чистом Javascript. Мне бы хотелось, чтобы при нажатии пользователем кнопки "Сохранить" редактор загружает файл. Я уже частично работал:
uriContent = "data:application/octet-stream," + encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
Загрузка файла, но проблема в том, что файл называется "загрузка".
Вопрос. Как я могу изменить имя файла как угодно, например filename.txt
?
Ответы
Ответ 1
Замените кнопку "Сохранить" на привязку и установите новый атрибут download
динамически. Работает в Chrome и Firefox:
var d = "ha";
$(this).attr("href", "data:image/png;base64,abcdefghijklmnop").attr("download", "file-" + d + ".png");
Вот рабочий пример с именем, заданным как текущая дата: http://jsfiddle.net/Qjvb3/
Здесь приведена таблица совместимости для атрибута download
: http://caniuse.com/download
Ответ 2
function saveAs(uri, filename) {
var link = document.createElement('a');
if (typeof link.download === 'string') {
document.body.appendChild(link); // Firefox requires the link to be in the body
link.download = filename;
link.href = uri;
link.click();
document.body.removeChild(link); // remove the link when done
} else {
location.replace(uri);
}
}
Ответ 3
Используйте свойство filename
следующим образом:
uriContent = "data:application/octet-stream;filename=filename.txt," +
encodeURIComponent(codeMirror.getValue());
newWindow=window.open(uriContent, 'filename.txt');
EDIT:
По-видимому, нет надежного способа сделать это. Смотрите: Есть ли способ указать предлагаемое имя файла при использовании данных: URI?