Самый простой способ записать файлы локально в Windows с помощью клиентского JS

Я знаю, что клиентский JavaScript в браузере обычно не может записывать файлы локально на диск Windows по соображениям безопасности.

В то же время я слышал, что это возможно с помощью некоторых дополнительных инструментов или обходных путей, и я ищу самый простой с минимальным количеством строк кода или / и с минимальным размером.

Способы и обходные пути, о которых я слышал или читал, но некоторые из них ненадежны, а другие просто не подходят для меня:

[* не объясню почему]

  • локальный LAMP-сервер, такой как WAMP, XAMP и т. д.
  • локальная версия NodeJS
  • HTA-файл с JS + Windows ActiveXObject ('Scripting.FileSystemObject')
  • Файловый API HTML5 и API файловой системы Chrome
  • создание и загрузка файла Blob

Я читал, что JavaScript может загружать Java-апплет, а апплет может получить доступ к файловой системе, но я совсем не знаю Java и не знаю, с чего начать. Я слышал о Silverlight, но тоже не знаю.

Или, может быть, есть еще более простой способ

Кажется, вы что-то неправильно поняли. Локально запустить JS в Node.js можно писать в файловую систему да. Как и серверные языки. Вы не можете использовать JS в качестве языка сценариев на стороне клиента для записи в файл в пределах области действия браузера (подумайте об этом, куда бы мог пойти файл?). Вы должны заявить Почему, что чувствуете необходимость в этом, и люди могут сказать вам, почему вам не следует этого делать и как вы можете иначе выполнить свою задачу.

Claus Jørgensen 11.09.2018 00:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
40
1

Ответы 1

Простая реализация - использовать тег привязки со встроенными данными:

<a href = "data:text,this is the content of the text file" download = "filename.txt">Download File</a>

Что касается встраивания различных типов данных в ваш тег href, посмотрите «схему uri данных». https://en.wikipedia.org/wiki/Data_URI_scheme

Я использовал этот тип встраивания для файлов Excel, PDF, изображений и т. д.

В чистом javascript есть также программный подход, который основан на том же трюке создания тега привязки в javascript и запуска на нем функции щелчка:

var a = document.createElement('a')
a.download = "filename.txt"
a.href = 'data:text,this is the content of the text file'
a.click()

Другие вопросы по теме