Как заставить браузер отображать "сохранить как диалог", чтобы пользователь мог сохранить содержимое строки в файл в своей системе?
Как я могу заставить браузер отображать "сохранить как диалог", чтобы пользователь мог сохранить содержимое строки в файле в своей системе?
Например:
var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");
Результат:
![Example]()
Ответы
Ответ 1
Если кому-то все еще интересно...
Я сделал это вот так:
<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a>
Не могу вспомнить мой источник, но он использует следующие методы \features:
- html5 атрибут загрузки
- данные uri's
Найдено ссылку:
http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/
EDIT:
Как вы можете получить из комментариев, это делает НЕ работать в
- Internet Explorer (работает в Edge v13)
- Safari
- Safari iOS
- Opera Mini
- Android-браузер (4.3 и ниже)
http://caniuse.com/#feat=download
Ответ 2
Для этого есть библиотека javascript, см. FileSaver.js в Github
Однако функция saveAs()
не отправит чистую строку в браузер, вам необходимо преобразовать ее в blob
:
function data2blob(data, isBase64) {
var chars = "";
if (isBase64)
chars = atob(data);
else
chars = data;
var bytes = new Array(chars.length);
for (var i = 0; i < chars.length; i++) {
bytes[i] = chars.charCodeAt(i);
}
var blob = new Blob([new Uint8Array(bytes)]);
return blob;
}
а затем вызовите saveAs
на blob, как будто:
var myString = "my string with some stuff";
saveAs( data2blob(myString), "myString.txt" );
Конечно, не забудьте включить вышеупомянутую библиотеку javascript на свою веб-страницу, используя <script src=FileSaver.js>
Ответ 3
Это возможно, используя эту реализацию javascript в кросс-браузере функции HTML5 saveAs
: https://github.com/koffsyrup/FileSaver.js
Если все, что вы хотите сделать, это сохранить текст, то указанный выше script работает во всех браузерах (включая все версии IE), используя только JS.
Ответ 4
Использование execComand:
<input type="button" name="save" value="Save" onclick="javascript:document.execCommand('SaveAs','true','your_file.txt')">
В следующей ссылке:
execCommand