前提・実現したいこと
JavaScript の FileReader を用いて複数の添付ファイルを読み込んでいます。
最終的にはフロント側で読み込んだ添付ファイルのパラメータをバックエンド側に渡したいと思っております。
発生している問題
バックエンド側でログを出力すると、fileName の値は取得できましたが、fileList は NULL となりました。
(バックエンド側は特殊な言語を使用している為、回答を得にくい為こちらの処理については割愛させて頂きます)
そこで、フロント側の fileList に情報が格納されていないのではと推測しましたが、
バックエンド側に値を渡す前に、コンソールにログを出力したところ、値は格納されているように見受けられます。
試しに、console.log(param.fileList[0].name);
といったように、
実行結果で出力しているファイル名の「test1.pdf」が取得できるかログを出力してみましたが、
「undefined」となり、fileList に格納されている値を抽出できない為、NULL となっているのではと考えました。
fileList に格納されている各パラメーター(name, file)の取得方法について、知恵をお貸し頂ければ幸いです。
該当のソースコード
JavaScript
1$("#uploadButton").click(function(){ 2 var uploadFile = document.getElementById('uploadFile'); 3 var param = new Object(); 4 param.fileName = ''; 5 param.fileList = []; 6 var returnParam = new Object(); 7 8 for(let i = 0; i < uploadFile.files.length; i++) { 9 var file = uploadFile.files[i]; 10 if(i == 0) { 11 param.fileName = file.webkitRelativePath; 12 } else { 13 returnParam = readFile(file); 14 param.fileList.push(returnParam); 15 } 16 } 17 console.log(param); 18 uploadAttachments(param); 19}); 20 21function readFile(file) { 22 var inputFile = new Object(); 23 var reader = new FileReader(); 24 reader.readAsDataURL(file); 25 reader.onloadend = function() { 26 var dataURL = reader.result; 27 inputFile['name'] = file.name; 28 inputFile['file'] = dataURL.match(/,(.*)$/)[1]; 29 }; 30 return inputFile; 31}
コンソール実行結果
console.log(param);
を実行した結果
▼{fileName: "2020-11-01 00.00.00", fileList: Array(3)} fileName: "2020-11-01 00.00.00" ▼fileList: Array(3) ▶︎0: {name: "test1.pdf", file: "AAAA......"} ▶︎1: {name: "test2.pdf", file: "AAAA......"} ▶︎2: {name: "test3.pdf", file: "AAAA......"}