Как создать файл с помощью JavaScript в Mozilla Firefox

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

Спасибо...

8
задан minu 18 June 2010 в 07:10
поделиться

7 ответов

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

http://www.tek-tips.com/viewthread.cfm?qid=1171273&page=1

1
ответ дан 5 December 2019 в 15:19
поделиться

Вы можете писать файлы на 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

4
ответ дан 5 December 2019 в 15:19
поделиться

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

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

3
ответ дан 5 December 2019 в 15:19
поделиться

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

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

0
ответ дан 5 December 2019 в 15:19
поделиться

Для этого будет 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
ответ дан 5 December 2019 в 15:19
поделиться

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

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

Пример:

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

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

$.get("update_last_access.php")

, тогда она выполняла бы сценарий на стороне сервера и записывала в файл.

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

0
ответ дан 5 December 2019 в 15:19
поделиться

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

Grz, Kris.

2
ответ дан 5 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: