File API FileReaderオブジェクトは、FireFox、Opera、またはInternet Explorer 10と同じようにChromeで動作します(うん、IEで動作します)。
簡単な例
まず、リーダーの新しいインスタンスを宣言します。
var reader = new FileReader();
さまざまなイベントのコールバックを定義します。
reader.onloadend = function(){
document.body.style.backgroundImage = "url(" + this.result + ")";
}
そして、それを読むために何かを渡します:
reader.readAsDataURL(file);
フィドル: http: //jsfiddle.net/jonathansampson/K3A9r/
複数のファイルの処理
複数のファイルを操作している場合は、状況が少し異なります。結果のFileListを循環させる必要があることは明らかですが、ファイルデータが何度も繰り返されることを防ぐために、クロージャーを使用する必要もあります。
// Continue only if we have proper support
if ( window.FileReader ) {
// Provide our logic upon the change even of our input
document.getElementById("collection").onchange = function(){
// Couple variables for handling each file
var counter = -1, file;
// Cycle over all files
while ( file = this.files[ ++counter ] ) {
// Create a reader for this particular file
var reader = new FileReader();
// Respond to the onloadend event of the reader
reader.onloadend = (function(file){
return function(){
var image = new Image();
image.height = 100;
image.title = file.name;
image.src = /^image/.test(file.type) ? this.result : "t9QlH.png";
document.body.appendChild( image );
}
})(file);
// Begin reading data for this file
reader.readAsDataURL( file );
}
}
}
フィドル: http: //jsfiddle.net/jonathansampson/jPTV3/
特徴の検出
FileReaderは、ほとんどすべての最新のブラウザーで使用できますが、それでも、古いブラウザーのユーザーに騒ぎを起こさないようにする必要があります。FileReaderを使用する前に、ウィンドウオブジェクトが存在するかどうかを必ず確認してください。
if ( window.FileReader ) {
// Safe to use FileReader
}
Chromeからローカルで実行
Chromeのfile:///パスでこれを実行すると、エクスペリエンスが損なわれることに注意してください。デフォルトでは、Chromeの現在のバージョンでは、file:///ページが他のファイルにアクセスすることを許可していません。--allow-file-access-from-files
フラグを使用してChromeを読み込んでこの動作を変更できます。

このメソッドは、それが開かれたブラウザのインスタンス上のファイルへのファイルアクセスのみを許可することに注意してください。将来的にすべてのブラウザインスタンスにこれを当てはめる場合は、デスクトップからショートカットを変更できます。Chromeショートカットを右クリックして、[プロパティ]に移動します。次に、ターゲットの最後にフラグを追加します。