FileReader readAsArrayBuffer 속성을 사용하여 로컬 파일을 읽으려고합니다. 읽기 성공이며 "onload"콜백에서 reader.result의 Array Buffer 객체를 볼 수 있습니다. 그러나 어레이 버퍼는 단지 비어 있습니다. 길이는 설정되지만 데이터는 설정되지 않습니다. 이 데이터를 얻으려면 어떻게해야합니까? 여기javascript readAsArrayBuffer가 빈 배열 버퍼를 반환합니다.
내 코드
<!DOCTYPE html>
<html>
<body>
<input type="file" id="file" />
</body>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
var selFile = files[0];
var reader = new FileReader();
reader.onload = function(e) {
console.log(e.target.result);
};
reader.onerror = function(e) {
console.log(e);
};
reader.readAsArrayBuffer(selFile);
}
document.getElementById('file').addEventListener('change', handleFileSelect, false);
</script>
</html>
reader.result
의 콘솔 출력e.target.result
ArrayBuffer {}
e.target.result.byteLength
25312
사람이 어떻게 데이터를 얻을하는 방법을 말해 줄래? 보안 문제가 있습니까? 오류가 없으면 오류가 실행되지 않습니다.
의견 : 버퍼 내용에 액세스하는 방법을 알려주십시오. AudioContext
을 사용하여 오디오 파일을 실제로 재생하려고합니다 ... 버퍼 데이터가 필요합니다 ...
은 왜 생각하십니까 버퍼가 비어 있습니까? 코드가 실제로 버퍼 내용을 액세스/검사하지 않습니다. 아마도'console.log' 결과물에 혼란 스러울 것입니까? 'console.log()'는 버퍼의 내용을 출력하지 않습니다. – nmaier
감사합니다 nmaier, 나는 같은 생각 ...하지만 버퍼 내용에 액세스하는 방법을 모르겠다 ... 버퍼 내용에 액세스하는 방법을 알려주시겠습니까? AudioContext를 사용하여 오디오 파일을 재생하려고합니다 ... 버퍼 데이터가 필요합니다 ... 많은 도움을주었습니다 –
onloadend 이벤트 대신 onload 이벤트를 사용하고 있습니다. onloadend로 onload 이벤트를 대체하면 코드가 작동합니다. 참조 : https://developer.mozilla.org/en-US/docs/Web/API/FileReader – seb