2012-09-22 11 views
20

लोड किया गया है, मैं उनसे कुछ डेटा पार्स करने के लिए निर्देशिका में कई फ़ाइलों को लोड कर रहा हूं। यह अब तक बहुत अच्छा काम करता है, लेकिन मैं जानना चाहता हूं कि मैं किस फाइल को देख रहा हूं। इसलिए लोड होने के बाद मुझे फ़ाइल का नाम चाहिए। क्या कोई उस पर मदद कर सकता है?फ़ाइलreader के बाद फ़ाइल नाम प्राप्त करें असीमित रूप से फ़ाइल

//

function updateData(){ 
    var dirReader = approot.createReader(); 

    var fail =failCB('Error - Directory for parsing failed to open'); // logs fail... 
    dirReader.readEntries(parseData,fail); 
} 

// प्रत्येक फ़ाइल

function parseData(entries){ 
    var i; 
    for (i=0; i<entries.length; i++) { 
    var reader = new FileReader(); 
    reader.onloadend = createListItem; 
    reader.readAsText(entries[i]); 
    } 
} 

// यहाँ मैं NAME जानना चाहूंगा लोड हो रहा है dir में सभी फाइलों हो जाता है !!!! किसी भी सुझाव के लिए

function createListItem(evt){ 
    // it gives me all the loaded data. But based on wich file it was, i would like to handle it! 
    console.log(evt.target.result) 
    // lets say something like this 
    $('#content').find( file.name ).append(evt.target.result); 
    } 
} 

चियर्स;)

उत्तर

28

File के चारों ओर एक बंद बनाएं वर्तमान फ़ाइल पर कब्जा करने की। फिर आप फ़ाइल नाम प्राप्त कर सकते हैं।

एक उदाहरण: http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-reading-files

बंद फ़ाइल जानकारी पर कब्जा करने की।

function parseData(entries){ 
    for (var i=0; i<entries.length; i++) { 
    reader.onloadend = (function(file) { 
     return function(evt) { 
     createListItem(evt, file) 
     }; 
    })(entries[i]); 
    reader.readAsText(entries[i]); 
    } 
} 

और कहा जाता समारोह एक अतिरिक्त तर्क

function createListItem(evt, file) { 
    console.log(evt.target.result) 
    console.log(file.name); 
} 
+0

यह अच्छा लग रहा है हो जाता है! लेकिन क्या आप यहां अपना उत्तर/उदाहरण पोस्ट कर सकते हैं ... और मैं जानना चाहता हूं कि यह बंद कैसे काम करता है। – Sidrich2009

+0

कुछ हिस्सों में मुझे नहीं मिल रहा है: 1. के लिए (var i = 0, f; f = files [i]; i ++) यह क्या है कि मैंने कभी भी इस तरह से लूप के लिए लिखने को नहीं देखा है 2. आपका अधिभार = ('लम्बी फंक्शन कॉल') (एफ), कभी भी नहीं देखा ^^ यह क्या करता है और फ़ंक्शन के पीछे एक एफ क्यों है? – Sidrich2009

+0

ऐसा करने का बेहतर तरीका, आपकी फाइल प्रविष्टि को आपके पाठक को एक संपत्ति के रूप में संलग्न करना होगा, जैसा कि इस उपयोगकर्ता प्रश्न में प्रदर्शित किया गया है: http://stackoverflow.com/questions/4404361/html5-file-api-get- फ़ाइल-वस्तु के भीतर FileReader-कॉलबैक/4404427 # 4404427 – kokorohakai

7

निम्नलिखित स्रोत कोड फ़ाइल पाठक के लिए एक विशेषता जोड़ने

for(i=0; i < files.length; i++) 
    { 
     var fileReader = new FileReader(); 
     fileReader.onload = function(file) 
     { 
       // DO what you need here 
       // file name = file.target.fileName 
     } // end of reader load 
     fileReader.fileName = files[i].name; 
     fileReader.readAsBinaryString(files[i]); 
    }