Можно ли записать в файл (на диск), используя JavaScript? - PullRequest
12 голосов
/ 20 января 2009

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

Ответы [ 8 ]

19 голосов
/ 20 января 2009

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

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

16 голосов
/ 20 января 2009

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

6 голосов
/ 20 января 2009

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

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

2 голосов
/ 20 января 2009

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

2 голосов
/ 20 января 2009

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

1 голос
/ 08 июня 2016

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

Вы можете перейти к 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

1 голос
/ 20 января 2010

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

0 голосов
/ 20 января 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...