2010-06-18 5 views
8

Firefox를 사용하여 파일을 만들고 내용을 작성하는 자바 스크립트에서 함수를 작성하고 싶습니다. 아무도이 경우에 도움이 될 수 있습니다.Mozilla Firefox에서 javascript를 사용하여 파일을 만드는 방법

감사합니다 ...

+1

왜 downvote을? –

+0

TiddlyWiki가하는 것과 같은 방식으로 클라이언트 측에서 파일을 만드는 것을 의미한다고 생각하여 질문에 대답했습니다. 자바 스크립트가 서버 측에서 파일을 생성 할 수 있는지 묻는 사람들이 있기 때문에 일부 사람들은이 질문을 기각했다. 어쩌면 당신은 분명히해야합니다. – flpmor

답변

2

보안상의 이유로 금지되어 있습니다. 그러나 html5를 사용하면 오프라인 저장소를 지원할 수 있습니다. Take a look here.

Grz, Kris.

3

웹 사이트의 Javascript가 로컬 파일 시스템에 액세스 할 수 없습니다.

데이터를 저장하려면 서버에 저장하거나 쿠키에 저장하십시오.

+1

또는 Web Storage의 클라이언트 https://developer.mozilla.org/en/dom/storage –

0

javascript가 원격 서버에 파일을 쓰지 못하는 것으로 응답 한 모든 사람이 정확하며 보안상의 이유로이 사실이 가능하지만 원하는 결과는 여전히 가능할 수 있습니다.

예를 들어 자바 스크립트를 사용하여 웹 사이트에 파일을 만들려면 일부 서버 측 스크립팅 언어와 AJAX 호출을 사용하면됩니다.

예 :

당신은 파일이 어떤 임의의 파일에 액세스 한 마지막 시간을 저장하는 파일을 만듭니다 update_last_access.php라는 서버에 파일이 있습니다.

당신은 당신의 자바 스크립트 함수는 AJAX 그런 다음이 서버 측 스크립트를 실행하고 파일에 쓸 것

$.get("update_last_access.php") 

JQuery와

에서, 예를 들어, 해당 스크립트를 호출 할이 있다면.

더 이상 도움이 제공되기 전에 무엇을하려고하는지 명확히해야합니다.

0

Firefox 3.6의 JavaScript 파일 시스템에서 파일을 읽을 수 있습니다 (예 : EPUB reader proof of concept 참조).

JavaScript로 파일을 직접 작성할 수는 없습니다. 서버를 통해 가야합니다.

4

Firefox에서 JavaScript로 파일을 작성할 수 있지만 XPCOM 객체 (내부 브라우저 API)를 사용해야합니다. 이것은 웹 페이지에서로드 된 JavaScript에는 허용되지 않으며 Firefox 부가 기능 (높은 수준의 권한이있는)에서 실행되는 JavaScript에서 사용하도록되어 있습니다.

권한이없는 (웹 페이지) JavaScript가 더 많은 권한을 요청할 수있는 방법이 있으며 사용자가 권한을 요청하면 권한 요청 팝업 창이 나타납니다. 웹 페이지 코드는 파일에 쓸 수 있습니다 .

그러나이 더 경고를 읽기 전에 :

이 자바 스크립트 표준이 아니므로 매우 특정 응용 프로그램을 개발하지 않는 한 나는이 방법을 권하고 싶지 않다, 대한 (같은 매우 구체적인 방식으로 사용됩니다 예 : http://www.tiddlywiki.com/ 클라이언트 측 JavaScript-HTML 전용 위키).

웹 사이트에서 XPCOM 권한을 요청하는 것은 나쁜 습관입니다! 기본적으로 사이트에서 다운로드 한 .exe를 실행하는 것과 기본적으로 같습니다. 사용자가 Firefox를 실행하는 사용자의 ID로 컴퓨터에 대한 전체 액세스 권한 (읽기, 쓰기, 실행)을 부여하도록 요청하는 중입니다. XPCOM을 사용하는

요청 권한 (이 사용자에게 확인 메시지를 표시합니다, 방법은 그것을 피할 수 없습니다) :

다음
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 

(모질라 개발자 네트워크에서 예제 코드)를 XPCOM 객체를 사용하여 파일에 쓰기 : 당신은 I에 대한 자세한 정보를 찾을 수 있습니다

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 

/O는 파이어 폭스에서 여기 XPCOM을 사용 : https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

관련 문제