Я хочу записать функцию в JavaScript, который создает файл, и запишите некоторое содержание в него, я работаю с Firefox, может кто-либо помогать мне в этом случае.
Спасибо...
Javascript выполняется в контексте на стороне клиента.
Вы можете писать файлы на JavaScript в Firefox, но вы должны использовать объект XPCOM (внутренний API браузера). Это не разрешено для JavaScript, загруженного с веб-страницы, и предназначено для использования JavaScript, запущенного внутри дополнения Firefox (с высоким уровнем привилегий).
Существует способ для непривилегированного JavaScript (веб-страницы) запросить больше привилегий, и если пользователь предоставит их (появится всплывающее диалоговое окно с запросом разрешения), код веб-страницы сможет записывать в файл.
Но прежде чем читать дальше, предупреждение:
Это не стандартный JavaScript, и я бы не рекомендовал такой подход, если только вы не разрабатываете очень специфическое приложение, которое будет использоваться очень специфическим образом (как, например, http://www.tiddlywiki.com/ клиентская вики на JavaScript-HTML).
Запрос привилегий XPCOM на сайте - плохая практика! Это эквивалентно запуску .exe, который вы только что скачали с сайта. Вы просите пользователя предоставить полный доступ к его компьютеру (чтение, запись, выполнение) с идентификацией пользователя, запускающего Firefox.
Запросите разрешение на использование XPCOM (это потребует от пользователя подтверждения, избежать этого невозможно):
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Затем запишите в файл, используя объект XPCOM (пример кода из Mozilla Developer Network):
1. // file is nsIFile, data is a string
2. var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
3. createInstance(Components.interfaces.nsIFileOutputStream);
4.
5. // use 0x02 | 0x10 to open file for appending.
6. foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
7. // write, create, truncate
8. // In a c file operation, we have no need to set file mode with or operation,
9. // directly using "r" or "w" usually.
10.
11. // if you are sure there will never ever be any non-ascii text in data you can
12. // also call foStream.writeData directly
13. var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
14. createInstance(Components.interfaces.nsIConverterOutputStream);
15. converter.init(foStream, "UTF-8", 0, 0);
16. converter.writeString(data);
17. converter.close(); // this closes foStream
Вы можете найти больше информации о вводе/выводе в Firefox с использованием XPCOM здесь: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O
Javascript с веб-сайтов не может получить доступ к локальной файловой системе.
Если вы хотите хранить данные, храните их на сервере или в файле cookie.
Вы можете читать файлы из файловой системы в JavaScript с помощью Firefox 3.6 - например, см. Мое доказательство концепции читателя EPUB .
Однако вы не можете писать файлы напрямую из JavaScript. Вы должны пройти через сервер.
Для этого будет API .. File Writer API. Ранняя спецификация здесь: http://www.w3.org/TR/file-writer-api/ Это еще не реализовано ни в одном браузере.
Обновление: Похоже, реализация уже существует. Посетите http://caniuse.com/filesystem и http://www.html5rocks.com/en/tutorials/file/filesystem/
Хотя все, кто ответил, что javascript не имеет возможности записывать файлы на удаленный сервер, верны, и это верно по соображениям безопасности, то, что вы хотите выполнить, все еще возможно.
Например, если вы хотите сделать возможным создание файла на своем веб-сайте с использованием javascript, вы можете сделать это с помощью некоторого языка сценариев на стороне сервера и вызова AJAX.
Пример:
У вас есть файл на вашем сервере с именем update_last_access.php
, который создаст файл, в котором хранится время последнего доступа к файлу в произвольном файле.
Если бы ваша функция javascript выполняла вызов AJAX для этого сценария, например, в jquery
$.get("update_last_access.php")
, тогда она выполняла бы сценарий на стороне сервера и записывала в файл.
Прежде чем вам будет оказана какая-либо дополнительная помощь, вам нужно будет уточнить, что вы пытаетесь сделать.
запись в файловую систему непосредственно из браузера запрещена по соображениям безопасности. Однако с html5 можно будет поддерживать автономное хранилище. Взгляните сюда .
Grz, Kris.