2010-06-18 14 views
8

मैं जावास्क्रिप्ट में एक फ़ंक्शन लिखना चाहता हूं जो फ़ाइल बनाता है और इसमें कुछ सामग्री लिखता है, मैं फ़ायरफ़ॉक्स के साथ काम कर रहा हूं, क्या कोई इस मामले में मेरी सहायता कर सकता है।मोज़िला फ़ायरफ़ॉक्स में जावास्क्रिप्ट का उपयोग कर फ़ाइल बनाने के लिए कैसे करें

धन्यवाद ...

+1

क्यों downvote? –

+0

मैंने इस सवाल का जवाब दिया कि यह क्लाइंट-साइड में एक फाइल बनाने का संदर्भ देता है, वैसे ही TiddlyWiki करता है। कुछ लोगों ने सवाल खारिज कर दिया है क्योंकि वे समझते हैं कि आप पूछ रहे हैं कि जावास्क्रिप्ट सर्वर की तरफ फाइलें बना सकता है या नहीं। शायद आपको स्पष्टीकरण देना चाहिए। – flpmor

उत्तर

1

जावास्क्रिप्ट क्लाइंट-साइड संदर्भ में निष्पादित करता है।

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

+0

लेकिन यह कुछ त्रुटि दिखा रहा है जैसे "वस्तु बनाएं परिभाषित नहीं है"। – minu

2

फ़ाइल एक ब्राउज़र से सीधे प्रणाली के लिए लिख सुरक्षा कारणों के लिए निषिद्ध है। एचटीएमएल 5 के साथ हालांकि ऑफलाइन स्टोरेज सपोर्ट होना संभव होगा। Take a look here

ग्रज़, क्रिस।

3

वेबसाइटों से जावास्क्रिप्ट स्थानीय फ़ाइल सिस्टम तक नहीं पहुंच सकता है।

यदि आप डेटा स्टोर करना चाहते हैं तो इसे सर्वर पर या कुकी में स्टोर करें।

+1

या वेब संग्रहण में क्लाइंट पर https://developer.mozilla.org/en/dom/storage –

0

जबकि प्रत्येक व्यक्ति ने जवाब दिया है कि जावास्क्रिप्ट में दूरस्थ सर्वर पर फ़ाइलों को लिखने की क्षमता नहीं है, और यह सुरक्षा कारणों से सच है, जो आप पूरा करना चाहते हैं, वह अभी भी संभव हो सकता है।

उदाहरण के लिए, यदि आप जावास्क्रिप्ट के उपयोग के साथ अपनी वेबसाइट पर एक फ़ाइल बनाना संभव बनाना चाहते हैं, तो आप कुछ सर्वर साइड स्क्रिप्टिंग भाषा और AJAX कॉल के साथ ऐसा कर सकते हैं।

उदाहरण:

आप update_last_access.php कहा जाता है अपने सर्वर पर एक फ़ाइल जो जो पिछली बार फ़ाइल कुछ मनमाने ढंग से फाइल में पहुंच बनाई गई थी संग्रहीत करता है एक फ़ाइल बनाने जाएगा।

आप तो अपने जावास्क्रिप्ट समारोह एक AJAX कि स्क्रिप्ट के लिए बाहर कहते हैं, उदाहरण के लिए, jQuery

$.get("update_last_access.php") 

में तो इस सर्वर साइड स्क्रिप्ट निष्पादित और फाइल करने के लिए लिखते थे बनाना था।

इससे पहले कि आप के लिए और भी सहायता प्रदान की जा सके, आपको यह स्पष्ट करना होगा कि आप क्या करने की कोशिश कर रहे हैं।

0

आप फ़ायरफ़ॉक्स 3.6 के साथ जावास्क्रिप्ट में फाइल सिस्टम से फ़ाइलें पढ़ सकते हैं - उदाहरण के लिए, मेरे EPUB reader proof of concept देखें।

हालांकि आप सीधे जावास्क्रिप्ट से फ़ाइलें नहीं लिख सकते हैं। आपको एक सर्वर के माध्यम से जाना है।

4

आप फ़ायरफ़ॉक्स में जावास्क्रिप्ट में फ़ाइलें लिख सकते हैं, लेकिन आपको एक XPCOM ऑब्जेक्ट (आंतरिक ब्राउज़र API) का उपयोग करना होगा। किसी वेब पेज से जावास्क्रिप्ट लोड होने की अनुमति नहीं है, और इसका उपयोग फ़ायरफ़ॉक्स ऐड-ऑन (विशेषाधिकारों के उच्च स्तर के साथ) के अंदर चल रहे जावास्क्रिप्ट द्वारा किया जाना है।

अनधिकृत (वेब ​​पेज) जावास्क्रिप्ट के लिए अधिक विशेषाधिकारों का अनुरोध करने का तरीका है और यदि उपयोगकर्ता इसे अनुदान देता है (अनुमति के लिए एक पॉप अप संवाद होगा), तो वेब पेज कोड फ़ाइल में लिखने में सक्षम होगा ।

लेकिन इससे पहले कि आप आगे, एक चेतावनी पढ़ें:

यह न मानक जावा स्क्रिप्ट है और मैं इस दृष्टिकोण की सिफारिश नहीं होगा जब तक आप एक बहुत ही विशेष एप्लिकेशन विकसित कर रहे, के लिए की तरह एक बहुत विशिष्ट तरीके से उपयोग किया जाएगा कि (उदाहरण, http://www.tiddlywiki.com/ क्लाइंट-साइड जावास्क्रिप्ट-एचटीएमएल केवल विकी)।

किसी वेबसाइट पर XPCOM विशेषाधिकारों का अनुरोध करना एक बुरा अभ्यास है! यह मूल रूप से किसी साइट से डाउनलोड किए गए .exe को चलाने के बराबर है। आप उपयोगकर्ता को फ़ायरफ़ॉक्स चलाने वाले उपयोगकर्ता की पहचान के साथ अपने कंप्यूटर (पढ़ने, लिखने, निष्पादित) तक पूर्ण पहुंच प्रदान करने के लिए कह रहे हैं। XPCOM उपयोग करने के लिए

अनुमति का अनुरोध करें (यह पुष्टि करने के लिए उपयोगकर्ता का संकेत देगा, कोई रास्ता नहीं यह से बचने के लिए):

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

फिर, (मोज़िला डेवलपर नेटवर्क से उदाहरण कोड) एक XPCOM वस्तु का उपयोग कर एक फ़ाइल पर लिखने :

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 

आप मैं के बारे में अधिक जानकारी प्राप्त कर सकते/ओ फ़ायरफ़ॉक्स में XPCOM यहाँ का उपयोग कर: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

1

इस के लिए एक API होगा .. Fil ई लेखक एपीआई। प्रारंभिक विनिर्देश यहां है: http://www.w3.org/TR/file-writer-api/ यह अभी तक किसी भी ब्राउज़र में लागू नहीं है।

अद्यतन: ऐसा लगता है कि पहले से ही एक कार्यान्वयन मौजूद है। http://caniuse.com/filesystem और http://www.html5rocks.com/en/tutorials/file/filesystem/ की जाँच करें

संबंधित मुद्दे