2013-06-05 32 views
17

Tôi cần đọc một số tệp csv, do người dùng cung cấp. Tập tin được truyền cho các trang/script sử dụng kéo và thả div, để xử lý các tập tin thả như sau:Truyền tham số cho sự kiện tải lên FileReader

function handleFileDrop(evt) { 
    evt.stopPropagation(); 
    evt.preventDefault(); 
    var files = evt.dataTransfer.files; // FileList object. 
    ... 
} 

tôi cần phải phân tích từng tập tin với một thư viện csv có thể chuyển đổi nó thành một mảng, nhưng tôi cũng cần phải theo dõi tên tệp mà tôi hiện đang phân tích cú pháp. Đây là mã tôi sử dụng để phân tích cú pháp từng tệp:

for(var x = 0; x < files.length; x++){ 
    var currFile = files[x]; 
    var fileName = currFile.name; 
    var reader = new FileReader(); 
    reader.onload = (function(theFile){ 
     return function(e){ 
      var csvArr = CSV.csvToArray(e.target.result, ";", true); 
      console.log(csvArr); 
     }; 
    })(currFile); 
    reader.readAsText(currFile); 
} 

Cho đến khi điều này hoạt động tốt. Những gì tôi cần là cũng chuyển tên tệp cho sự kiện reader.onload, ví dụ:

reader.onload = (function(theFile){ 
    return function(e){ 

     ***** I need to have fileName value HERE ***** 

    }; 
})(currFile); 

Có thể không? Tôi có thể làm cái này như thế nào? Cảm ơn trước sự giúp đỡ nào, Trân trọng

Trả lời

43

Hãy thử như sau:

var reader = new FileReader(); 
reader.onload = (function(theFile){ 
    var fileName = theFile.name; 
    return function(e){ 
     console.log(fileName); 
     console.log(e.target.result); 
    }; 
})(currFile); 
reader.readAsText(currFile); 

Ở đây, bạn đang tạo ra một mới fileName biến mỗi lần một tập tin được truyền cho phương thức bên ngoài. Sau đó, bạn tạo một hàm có quyền truy cập biến đó (do đóng) và trả về nó.

+0

Genius! Cảm ơn rất nhiều, tôi đã kéo tóc ra cố gắng để làm điều này. Tôi nghĩ bây giờ tôi bắt đầu hiểu được việc đóng cửa! – Fiver

+2

Làm cách nào để có thể nhận cả tên tệp và giá trị reader.result? – PatriceG

+0

Tôi đang gặp sự cố sau mã, 'theFile' đến từ đâu? Tôi có thể thấy currFile được định nghĩa ở đâu nhưng 'theFile' có liên quan đến cái gì? – NiallJG

Các vấn đề liên quan