Javascriptで新しいFile APIを使用すると、クライアント側の画像clientsideを表示するdataURLを作成するためのファイルを読み込むことができます。あなたがFileReaderのonloadコールバック内のFileオブジェクトに到達できるかどうかは疑問です。 私が例でこれを説明します:HTML5 File API:FileReaderコールバック内の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]; // this is the file I want!! var filereader = new FileReader(); filereader.onload = function(e) { this; // the FileReader object e.target; // the same FileReader object this.result; // the dataURL, something like data:image/jpeg;base64,..... var img = document.createElement('img'); img.src = this.result; img.title = file.fileName; // This won't be working document.appendChild(img); } } return false; }
私は何ができるか - 私が今何をすべきか - 関数内でループのための内容をラップし、新しいスコープを作成するには、それを実行し、ファイルを保持でそのような範囲で:
for (var i=0; i<files.length; i++) { var _file = files[i]; // this is the file I want!! (function(file) { // do FileReader stuff here })(_file); }
私はちょうど不思議だった...多分私は何かが不足しています。 FileReaderのonload関数からFileオブジェクトを取得する方法はありますか? this
とe.target
は、ファイルではなくFileReaderオブジェクトです。ファイルがthis
またはe
にありますか?私はそれを見つけることができません:(
おかげでたくさんの
PSフィドル:。。。http://jsfiddle.net/rudiedirkx/ZWMRd/1/
これは私が今使っているものです(そしてしばらく使っています):http://js1.hotblocks.nl - javascript:http://js1.hotblocks.nl/tests/ajax/fdd.js - 私の答えにはまだコードを使用しています。そして、それは動作します。閉鎖せずに(醜い)。 (これは '//'でコメントされています) – Rudie
Javascriptが好きな人は、その部分を使っても構いません。私は、Webworkerがこれでどのように役割を果たしているのだろうかと不思議です。(アップロード前に画像読み込みコールバックを使って読み込み、表示するためのWebワーカーを使用してください) – Rudie
'filereader.file = file;'の割り当てが見つかりませんでした。このソリューションを指摘してくれてありがとう –