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.targetFileReaderオブジェクトであり、Fileではありません。何かが入っているのですか、thisそれともeファイルですか?見つかりません:(
本当にありがとう。
PS。フィドル: http: //jsfiddle.net/rudiedirkx/ZWMRd/1/