2014-02-25 2 views
0

File API를 사용하여 JavaScript로 파일을 읽으려고합니다.JavaScript FileReader의 액세스 요소

다음 코드

function handleFileSelect(evt) { 
    var files = evt.target.files; // FileList object 

    var fileBlobs = []; 
    var reader = new FileReader(); 
    for (var i = 0, f; f = files[i]; i++) { 
        fileBlobs.push(reader.readAsBinaryString(f)); 
        console.log(reader) 
     } 
     } 

그것은 나에게

FileReader {onloadend: null, onerror: null, onabort: null, onload: null, onprogress: null…} 
error: null 
onabort: null 
onerror: null 
onload: null 
onloadend: null 
onloadstart: null 
onprogress: null 
readyState: 2 
result: "lat, lng, popup↵13.47262306516617336, 52.47896324136591062, 55↵13.40861762468653673, 52.54336741663770027, 44↵13.29255442595013115, 52.51117712705399754, 33↵13.38642907198692988, 52.44880630287082113, 22" 
__proto__: FileReader 

가 어떻게 만 result 부분에 액세스 할 수 있습니다이 개체를 기록 있나요?

+0

을 console.log (독자. 결과) –

+0

이것은 아무 것도 반환하지 않습니다 – ustroetz

답변

0

load 이벤트는 FileReader으로 처리해야합니다. 파일을 읽기

reader.onload = function() { 
    var contents = this.result; 
}; 

비동기 작업입니다 : 핸들러에서, reader.result 또는 this.result가 액세스 할 수 있습니다. 따라서 각 파일에 대해 별도의 FileReader을 만들어야합니다. FileReader을 다시 사용하려면 for 루프를 사용할 수 없습니다. 대신 현재 파일이 처리 될 때까지 다음 파일을 읽으 려 할 때까지 기다려야합니다.

1

는 테스트,하지만 난이 일을해야한다고 생각하지 :

var file = document.getElementById('element-id').files; 
var fr = new FileReader(); 
var storeBlobs = []; 
fr.onload = function(e) { 
    storeBlobs.push(e.target.result); 
}; 
for(var i = 0, l = file.length; i < l; i++) { 
    var content = fr.readAsText(file[i]); 
} 

파일은 온로드 방법 여물을 FileReader 객체를 조작 할 수있는 객체의 배열을 반환합니다. 사용자가 둘 이상의 파일을로드하는 경우 모든 파일을 처리하려고하므로 for 루프를 사용합니다. 이 코드는 테스트되지 않았지만 작동해야한다고 강조합니다. 우리는 하나 개의 파일을로드 해당 사용자를 가정하면

우리는 전용 파일 객체가이 객체와 코드의 첫 번째 라인을 교체하는이 같은 행동을 할 수 있습니다 :

var file = document.getElementById('element-id').files[0];

+0

왜 작동하는지에 대한 설명이나 설명을 넣으십시오. – meneldal

+0

@meneldal이 코드는 간단하고 자체적으로 설명 할 만하지만, 당신이 맞다고 생각하고, 어떤 사람들은 더 많은 정보를 필요로합니다. 승인. 감사합니다. 그리고 그 점에 대해 감사드립니다. – Gaja

+0

귀하의 답변을 읽는 사람들은 사용 된 언어가 무엇이든간에 능숙하지 않을 수 있으므로되도록 많이 설명하는 것이 우수 실행으로 간주됩니다. – meneldal