2012-09-22 33 views
20

tôi đang tải một số tệp trong một thư mục để phân tích cú pháp một số dữ liệu từ chúng. Điều này làm việc tuyệt vời cho đến nay, nhưng tôi muốn biết tập tin mà tôi đang xem xét. Vì vậy, tôi cần tên của tập tin sau khi nó được tải. Có ai có thể giúp đỡ về điều đó không?Nhận tên tệp sau khi trình tải tệp không đồng bộ tải một tệp

// được tất cả các file trong thư mục

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

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

// tải mỗi tập tin

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

// Ở đây tôi muốn biết tên !!!!

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); 
    } 
} 

cổ vũ cho bất cứ đề nghị;)

Trả lời

28

Tạo một đóng cửa quanh File để nắm bắt những file hiện hành. Sau đó, bạn có thể nhận được tên tập tin.

Ví dụ: http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-reading-files

Đóng để chụp thông tin tệp.

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]); 
    } 
} 

Và gọi là chức năng được một cuộc tranh cãi thêm

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

có vẻ tốt! nhưng bạn có thể xin vui lòng gửi câu trả lời của bạn/ví dụ ở đây ... và tôi muốn biết làm thế nào mà đóng cửa hoạt động. – Sidrich2009

+0

có một số phần iam không nhận được: 1. cho (var i = 0, f; f = tệp [i]; i ++) điều đó là doin tôi chưa bao giờ thấy cách viết một vòng lặp 2. onload của bạn = ('gọi hàm dài') (f), cũng không bao giờ thấy^^ nó làm gì và làm thế nào/tại sao có một f đằng sau hàm? – Sidrich2009

+0

Cách tốt hơn để làm điều đó, sẽ là đính kèm mục nhập tệp của bạn làm tài sản cho người đọc của bạn, như được minh họa trong câu hỏi của người dùng này: http://stackoverflow.com/questions/4404361/html5-file-api-get- tập tin-đối tượng-trong-filereader-callback/4404427 # 4404427 – kokorohakai

7

Mã nguồn sau đây thêm một thuộc tính để người đọc tập tin

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]); 
    } 
Các vấn đề liên quan