Можно ли записать в файл (на диске) с помощью JavaScript?

Я новичок-промежуточный программист, берущий удар в AJAX. При чтении на JavaScript мне было любопытно, что большинство примеров, которые я использовал для использования PHP для такой операции. Я знаю, что многие из вас могут утверждать, что "я делаю это неправильно" или "JavaScript - это язык на стороне клиента" и т.д., Но вопрос стоит., Вы можете написать файл только в JavaScript?

Ответ 1

Да, конечно, вы можете. Это зависит от того, какие API-объекты предоставляет вам механизм javascript.

Однако, вероятность того, что механизм javascript, о котором вы думаете, не предоставляет этой возможности. Определенно, ни один из основных веб-браузеров не позволит.

Ответ 2

Вы можете писать файлы cookie с помощью Javascript, в новых браузерах у вас также есть база данных SQLite для хранения данных на стороне клиента. Однако вы не можете хранить данные в произвольном месте на диске.

Ответ 3

Вы можете использовать что-то вроде Google Gears для создания приложений JS, которые могут хранить данные в локальном кеше или базе данных. Вы не можете читать или писать произвольные области диска. (Это было написано в 2009 году - Google Gears теперь устарела)

В эти дни вы должны смотреть на локальные возможности хранения, предоставляемые HTML5

Ответ 4

Нет. Вы можете использовать JavaScript для создания запроса AJAX для обработки на стороне сервера script, но позволяя JS напрямую писать на диск - либо на стороне клиента, либо на стороне сервера - было бы массивным, неприятным, вопиющим, непростительным отверстием для обеспечения безопасности браузера.

Ответ 5

Короткий ответ - нет; вы не можете по умолчанию записывать файл на локальный диск, используя простой JavaScript в браузере. Для этого вам понадобится помощник. Например, TiddlyWiki - это движок вики, который представляет собой единственный статический HTML файл, но он может записывать себя на диск с помощью апплета Java (Tiddly Saver).

Ответ 6

Вы можете в Windows Scripting Host.

Ответ 7

Нет, Javascript не имеет права доступа к файловой системе вообще, это ограничение безопасности в браузере. Единственный способ, которым вы действительно можете это сделать, - это использовать ActiveX, но затем ограничивать себя использованием IE.

Edit: Как указано выше, это может быть возможно, если ваш движок разрешил его, однако я не знаю об одном движке браузера (что я и хотел, вы его пишете), что позволит вам.

Ответ 8

Следующая версия chrome (v52) сделала это возможным с помощью api + service worker + streams, теперь вы можете включить потоки с флагом...

вы можете перейти к StreamSaver.js, чтобы увидеть некоторые примеры того, как его использовать.

Вы можете сделать что-то вроде этого:

const writeStream = fs.createWriteStream('filename.txt')
const encoder = new TextEncoder
let data = 'a'.repeat(1024)
let uint8array = encoder.encode(data + "\n\n")

writeStream.write(uint8array)
writeStream.close()

Или просто взгляните на демо: https://jimmywarting.github.io/StreamSaver.js/example.html