Javascriptの新しいFileAPIを使用すると、Javascriptでファイルを読み取って、クライアント側の画像をクライアント側に表示するdataURLを作成できます。FileReaderのonloadコールバック内でFileオブジェクトに到達できるかどうか疑問に思っています。これを例で説明します。
var div = document.createElement('div'); div.ondrop = function(e){ e.preventDefault(); e.stopPropagation(); var files = e.dataTransfer.files; for(var i = 0; i <files.length; i ++){ var file = files [i]; //これは私が欲しいファイルです!! var filereader = new FileReader(); filereader.onload = function(e){ これ; //FileReaderオブジェクト e。ターゲット; //同じFileReaderオブジェクト this.result; // dataURL、data:image / jpeg; base64、....のようなもの var img = document.createElement('img'); img.src = this.result; img.title = file.fileName; //これは機能しません document.appendChild(img); } } falseを返します。 }
私ができること(今私がしていること)は、forループの内容を関数でラップし、それを実行して新しいスコープを作成し、次のようにそのスコープにファイルを保持することです。
for(var i = 0; i <files.length; i ++){ var _file = files [i]; //これは私が欲しいファイルです!! (関数(ファイル){ //ここでFileReaderの処理を行います })(_ファイル); }
私はただ疑問に思っていました...多分私は何かが欠けています。FileReaderのonload関数内からFileオブジェクトを取得する方法はありますか?this
とは両方ともe.target
FileReaderオブジェクトであり、Fileではありません。何かが入っているのですか、this
それともe
ファイルですか?見つかりません:(
本当にありがとう。
PS。フィドル: http: //jsfiddle.net/rudiedirkx/ZWMRd/1/