Как создать файл, используя JavaScript в Mozilla Firefox - PullRequest
8 голосов
/ 18 июня 2010

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

Спасибо ...

Ответы [ 8 ]

4 голосов
/ 19 июня 2010

Вы можете писать файлы на JavaScript в Firefox, но вы должны использовать объект XPCOM (API внутреннего браузера).Это не разрешено для JavaScript, загруженного с веб-страницы, и предназначено для использования JavaScript, работающим внутри надстройки Firefox (с высоким уровнем привилегий).

Существует способ для непривилегированных (вебстраница) JavaScript для запроса дополнительных привилегий и, если пользователь предоставит их (появится всплывающее диалоговое окно с запросом разрешения), код веб-страницы сможет записать в файл.

Но прежде чем читать дальше, предупреждение:

Это не стандартный JavaScript, и я бы не рекомендовал этот подход, если вы не разрабатываете очень конкретное приложение, которое будет использоваться очень специфическим образом (например, * 1008).* клиентская вики (только 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  

Вы можете найти больше информации о I /O в Firefox с использованием XPCOM здесь: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

3 голосов
/ 18 июня 2010

Javascript с веб-сайтов не может получить доступ к локальной файловой системе.

Если вы хотите хранить данные, храните их на сервере или в файле cookie.

2 голосов
/ 18 июня 2010

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

Grz, Kris.

1 голос
/ 21 июня 2010

Для этого будет API. File Writer API.Ранняя спецификация здесь: http://www.w3.org/TR/file-writer-api/ Она еще не реализована ни в одном браузере.

Обновление: Кажется, реализация уже существует.Проверить http://caniuse.com/filesystem и http://www.html5rocks.com/en/tutorials/file/filesystem/

1 голос
/ 18 июня 2010

Javascript выполняется в контексте на стороне клиента.

http://www.tek -tips.com / viewthread.cfm? QID = 1171273 & страница = 1

0 голосов
/ 30 октября 2011

Mozilla планирует включить FileSaver в Gecko 9: https://bugzilla.mozilla.org/show_bug.cgi?id=557540

0 голосов
/ 18 июня 2010

Вы можете читать файлы из файловой системы в JavaScript с помощью Firefox 3.6 - см., Например, мой EPUB-ридер, подтверждающий концепцию .

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

0 голосов
/ 18 июня 2010

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

Например, если вы хотите создать возможность создания файла на своем веб-сайте с использованием javascript, вы можете сделать это с помощью некоторого языка сценариев на стороне сервера и вызова AJAX.

Пример:

На вашем сервере есть файл с именем update_last_access.php, который создаст файл, в котором будет храниться последний раз, когда к файлу обращались в произвольном файле.

Если у вас была функция javascript, сделайте вызов AJAX для этого скрипта, например, в jquery

$.get("update_last_access.php")

Затем выполняется сценарий на стороне сервера и выполняется запись в файл.

Прежде чем вам будет предоставлена ​​дополнительная помощь, вам необходимо уточнить, что вы пытаетесь сделать.

...