Как открыть диалоговое окно Сохранить как
Как динамически выбрать место сохранения файла на локальном компьютере с помощью чистого javascript.
Решение: В настройках браузера в Инструментах в Загруженных файлах выставить переключатель на Всегда спрашивать, куда сохранять файлы. Вопрос: А если у пользователя этот переключатель стоит Сохранять по-умолчанию в Загрузки, то как временно на стороне пользователя включить этот переключатель. |
Чисто с помощью js никак.
Окно сохранения файла открывается при нажатии на ссылку (<a>) с атрибутом download. (Не уверен, но кажется в настройках браузера еще должно быть указано спрашивать место сохранения, а не сохранять автоматически в какую то папку). Ну можно конечно на js создать элемент <a> с необходимыми атрибутами, проимитировать клик на нем и окно появится. |
Пробовал через ссылку: <a href="text.txt" download>text</a>.
Файл text.txt лежит вместе с index.html. После нажатия на ссылку просто открывается содержимое файла на той же странице. Окно сохранить как не появляется. Код html: <!DOCTYPE html> <html lang="en"> <head> <title>Document</title> </head> <body> <a href="text.txt" download>text</a> </body> </html> Делал как найте: https://webref.ru/html/a/download Там по нажатию по ссылке Скачать файл открывается окно Сохранить как. У меня открывается сразу текст файла. Как правильно написать текст ссылки на файл. |
При работе с сервером (если страница скачивается с сервера) диалоговое окно открывается.
При работе с локальной файловой системой, действительно файл выводится на страницу Вот кстати https://developer.mozilla.org/ru/doc...HTML/Element/a В примечании к атрибуту download Цитата:
|
С помощь программы Denwer и создания сайта действительно открывается окно Сохранить как. А нужно без сервера, чтобы только средствами обычной страницы html локального компьютера открывалось это окно в офлайне на стороне пользователя.
|
Создатели браузеров не подумали, что вам это будет нужно. Они свои браузеры делают, в первую очередь, для работы по сети.
|
Может есть какая-нибудь библиотека javascipt?
|
Забудь о локальных html. Из создателей браузеров никто не заботится об их работоспособности, но зато постоянно накидывают всё новые и новые ограничения, причём произвольно и разрознено. Даже если ты заставишь что-то работать сейчас - совершенно не факт что уже завтра всё снова не сломается.
|
Другими словами, нельзя сделать без сервера!!!
На самом деле можно. Есть файл html по ссылке: https://disk.yandex.ru/d/6qZUCpUlnpl5NA Если нажать на этой странице на кнопку Экспорт -> Сохранить, то в офлайне (без интернета, без сервера) откроется окно Сохранить как. Вопрос: Как это реализовано? |
Цитата:
Но js тут совершенно не при чем. Просто обычным кликом файл не сохранить. Впрочем, если этот файл не скачивается откуда то, а создан как блоб непосредственно скриптом, и его url указан через URL.createObjectURL, то вполне возможно он сохранится. Такие url вроде по умолчанию имеют тот же домен, что и страница, которая их создала. Надо пробовать, что будет при использовании локальных страниц. |
Лень смотреть, но скорее всего там что-то типа:
<a href="" download="text.txt">text.txt</text> <script> var text = 'от так уот'; document.links[0].href = URL.createObjectURL(new Blob([text])); </script> Т.е. содержимое файла для скачивания генерируется внутри самого файла. |
Реализовано на javascript:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="saveAs()" type="button">Сохранить файл</button> <script> function saveAs() { var e = document.createElement('a'); e.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent('Привет программистам JavaScript')); e.setAttribute('download', 'text.txt'); document.body.appendChild(e); e.click(); document.body.removeChild(e); } </script> </body> </html> Информацию нашел здесь: https://stackoverflow.com/questions/...through-server |
controllerr, дык да, см. выше. Но отдельный(рядом в папочке) файл ты всё равно не сможешь заставить скачать.:)
|
В общем-то мне и не нужен внешний файл. У меня информация собирается в самом файле html.
Всем спасибо за потраченное на меня время. Тема закрыта. |
Часовой пояс GMT +3, время: 22:03. |