JavaScriptのFileReaderの使い方を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptのFileReaderの使い方について解説しています。FileReaderを使うと、CSVファイルなどのテキストファイルや画像ファイルをブラウザから直接読み取ることが出来ます。今回は読み込みのみですが、そのままアップロードすることも出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

JavaScriptのFileReaderの使い方について解説します。実際のコードをもとに解説していきますので、理解を深めていきましょう。

また、入門向けのJavaSriptを学習できるサイトも紹介しているので、合わせてご覧ください。

 

なお本記事は、オンラインブートキャンプ フロントエンドコース(JavaScript・jQuery講座)の内容をもとにしています。

 

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

FileReaderの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

JavaScriptのFileReaderとは

FileReaderとはHTML5 世代の機能でユーザーのPC内にあるファイルやバッファ上の生データに対して、読み取りアクセスを行えるオブジェクトです。

FileReaderの書き方

FileReaderオブジェクトを生成する

var file_reader = new FileReader();

 

プロパティ

1.FileReaderの状態を取得

file_reader.readyState

ステータス 戻り値 説明
EMPTY 0 まだデータは何も読み込まれていません。
LOADING 1 データ読込中です。
DONE 2 読込処理がすべて終了しました。

2.ファイル読み込み中のエラーを取得

file_reader.error;

3.読み込んだファイルの内容を取得

file_reader.result;

// このプロパティは読み込み完了後に有効になります。
// データ型は読込処理を行うメソッドによって変わります。

 

メソッド

file_reader.abort();
読込処理を中断します。結果として readyState は DONE に変わります。

file_reader.readAsArrayBuffer();
ArrayBufferオブジェクトを取得します。

file_reader.readAsBinaryString();
バイナリデータを文字列として取得します。

file_reader.readAsDataURL();
DataURIScheme文字列を取得します。

file_reader.readAsText();
ファイルの内容をテキスト文字列として取得します。

 

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

実際に書いてみよう

まずは、使用するブラウザがFileReaderをサポートしているかどうかを確認してみましょう。

 

window.FileReader を使用してBoolean形式で確認してみます。

var result = Boolean(window.FileReader);

if (result) {

console.log('FileReaderはサポートしています。');

} else {

console.log('FileReaderはサポートしていません。');

}

 

Blobオブジェクトをテキスト文字列として取得してみます。

var text_blob = new Blob(["文字列取得テスト"] , {type:"text/plain"}); //Blobオブジェクトを作成

var file_reader = new FileReader(); //FileReaderオブジェクトを作成

//読み込み成功時のイベントを設定

file_reader.onload = function(e){
// 出力テスト
console.log(file_reader.result); // "文字列テスト"
};

// text文字列として読み込みを開始

file_reader.readAsText(text_blob);

 

筆者プロフィール

この記事を監修してくれた方

水野大輝(みずのたいき)

2014年より、某物流会社のシステム開発担当として入社

未経験ながら、社内システム保守~新規受注システム開発まで携わり、JavaScript Ruby on Rails PostgreSQLなどの経験を積む。
現在も、開発案件に携わりながら、日々勉強中。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

また、TechAcademyではJavaScriptを使ってWebサービスを公開できるオンラインブートキャンプ フロントエンドコース(JavaScript・jQuery講座)を開催しています。

プログラミングの初心者でも受講可能です。Webサイトの表現の幅を広げたいという方はぜひご覧ください。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。