入力ファイルから取得したファイルをbyte []に変換しようとしています。私はFileReaderで試しましたが、何かを見逃してしまいます:
var bytes = [];
var reader = new FileReader();
reader.onload = function () {
bytes = reader.result;
};
reader.readAsArrayBuffer(myFile);
しかし、結局のところ、私のbytes varにはバイト配列が含まれていません。
私はこの投稿を見ました: 入力タイプ=ファイルを介してバイト配列を取得しています ですが、byte []で終わっておらず、readAsBinaryString()は非推奨です
私は何を見逃していますか?
ファイルを配列に入れたいだけだと思いますか?これらの関数はどうですか-1つはテキストとして、もう1つはbase64バイト文字列として読み取ることができます。readAsArrayBuffer
配列バッファー出力が本当に必要な場合は、それも含めました。
document.getElementById("myBtn").addEventListener("click", function() {
uploadFile3();
});
var fileByteArray = [];
function uploadFile1(){
var files = myInput.files[0];
var reader = new FileReader();
reader.onload = processFile(files);
reader.readAsText(files);
}
function uploadFile2(){
var files = document.querySelector('input').files[0];
var reader = new FileReader();
reader.onload = processFile(files);
reader.readAsDataURL(files);
}
function uploadFile3(){
var files = myInput.files[0];
var reader = new FileReader();
reader.onload = processFile(files);
reader.readAsArrayBuffer(files);
}
function processFile(theFile){
return function(e) {
var theBytes = e.target.result; //.split('base64,')[1]; // use with uploadFile2
fileByteArray.Push(theBytes);
document.getElementById('file').innerText = '';
for (var i=0; i<fileByteArray.length; i++) {
document.getElementById('file').innerText += fileByteArray[i];
}
}
}
<input id="myInput" type="file">
<button id="myBtn">Try it</button>
<span id="file"></span>