2011-06-21 14 views
11

समस्या हल, टिप्पणीHTML5 फ़ाइल एपीआई: सुरक्षा त्रुटि एक फ़ाइल पढ़ते समय

तीसरी समस्या मैं एचटीएमएल 5 फ़ाइल एपीआई के साथ पढ़ें: मैं अभी भी पर मैक ओएस एक्स हिमपात तेंदुए क्रोम 12 का उपयोग करें और मैं मैं अभी भी एचटीएमएल 5 फाइल एपीआई के साथ फाइलें पढ़ने की कोशिश कर रहा हूं, लेकिन FileHandler.error() को कॉल किया जाता है क्योंकि "SECURITY_ERR" होता है। जिस फ़ाइल को मैं पढ़ने की कोशिश करता हूं वह मेरे डेस्कटॉप से ​​एक नियमित .txt फ़ाइल है, लेकिन यह न तो अन्य फ़ाइलों के साथ काम करता है हालांकि मैं उन्हें नियमित अनुप्रयोगों के साथ खोल सकता हूं। http://cl.ly/1x1o2F0l2m3L1T2c0H0i

+0

समस्या हल हो गई! मैंने बस एक स्क्रिप्ट को एक वेबस्पेस पर अपलोड किया है जो यह सही काम करता है। –

+3

यदि आप 'file: //' से किसी ऐप का परीक्षण कर रहे हैं, तो आप क्रोम को निम्न झंडे से चला सकते हैं: '--allow-file-access-from-files --allow-file-access'। इसका उपयोग केवल परीक्षण उद्देश्यों के लिए किया जाना चाहिए। – ebidel

+0

@ebidel आपको उस टिप्पणी को उत्तर के रूप में जोड़ना चाहिए ताकि इस पोस्ट को बंद किया जा सके :) –

उत्तर

12

आप file:// से किसी एप्लिकेशन को परीक्षण कर रहे हैं, तो आप निम्न झंडे के साथ क्रोम चला सकते हैं:: --allow-file-access-from-files--allow-file-access

function FileHandler(files, action) { 
    console.log('FileHandler called.'); 

    this.files = files; 
    this.reader = new FileReader(); 
    this.action = action; 

    this.handle = function() { 
     console.log('FileHandler.handle called.'); 

     for (var i = 0; i < this.files.length; i++) { 
      this.reader.readAsDataURL(files[i]); 
     } 
    } 

    this.upload = function() { 
     console.log('FileHandler.upload called.'); 
     console.log(this.reader); 

     data = { 
      content: this.reader.result 
     } 

     console.log(data); 
    } 

    this.error = function() { 
     console.log('An error occurred while reading the file.'); 
     console.log(this.reader.error); 
    } 

    this.reader.onload = this.upload.bind(this); 
    this.reader.onerror = this.error.bind(this); 
} 

कोड निम्नलिखित कंसोल आउटपुट उत्पन्न करता है। इसका उपयोग केवल परीक्षण उद्देश्यों के लिए किया जाना चाहिए।

+0

तो मूल रूप से किसी वेबसाइट पर फ़ाइल रीडर का उपयोग करने का कोई तरीका नहीं है? आपको अपने उपयोगकर्ताओं को विशेष ध्वज के साथ अपने क्रोम ब्राउजर को शुरू करने की आवश्यकता नहीं हो सकती है: एस – sebpiq

+0

कोई 'फ़ाइल: //' प्रोटोकॉल का उपयोग केवल किसी भी सर्वर के बिना स्थानीय रूप से वेबसाइट का परीक्षण करते समय किया जाएगा, फाइल को तैनात करने के बाद ' http: // 'प्रोटोकॉल –

+0

यदि कोई टैबलेट एक HTML5 एप्लिकेशन निष्पादित करता है, तो क्या यह फ़ाइल का उपयोग करेगा: // या http: // प्रोटोकॉल? और यदि यह उत्तरार्द्ध है, तो क्या यह भी इस त्रुटि में चलता है? फ़ाइल/http संकेत के लिए – Extrakun

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