このページの本文へ

File APIでブラウザーからローカルファイルを操作 (2/5)

2010年10月05日 10時00分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

選択されたファイルの情報を表示する

 File APIは1つまたは複数のローカルファイルを扱います。対象となるファイルはHTMLフォームのfile(type属性がfileのinput要素)またはドラッグ&ドロップで指定します。今回はフォームを使うので従来どおり以下のようなHTMLを記述し、参照ボタンを表示します。ユーザーが参照ボタンをクリックするとファイル選択ダイアログが表示されます。


<input type="file" id="myFile" />


 multiple属性を指定するとダイアログで複数のファイルをまとめて選択できます。


<input type="file" id="myFile" multiple />


 選択されたファイルは以下のようにfiles配列にアクセスして読み出します。filesには選択されたファイルの数だけファイルオブジェクトが格納されます(選択されたファイルが1つの場合でも配列になります)。


document.getElementById("myFile").files[0]


 ファイルが1つの場合はfiles[0]になります。複数のファイルを扱う場合は繰り返し命令であるforを使います。

 選択されたファイルの内容を16進数で表示するにはファイルサイズの情報が必要ですので、ファイルの内容を読み出す前にファイル情報を取得します。ファイル情報は選択されたファイルオブジェクトのそれぞれのプロパティを参照します。ファイルオブジェクトには以下のプロパティがあります。

name ファイル名
size ファイルサイズ(バイト数)
typeファイルの種類(MIME Type)
urn ファイルのURN

 ファイルサイズであれば以下のようにして取得できます(単位はバイト数)。


document.getElementById("myFile").files[0].size


 サンプル2は、選択されたファイルの名前とサイズ、種類(MIME type)を表示するスクリプトです。サンプル2はSafari 5でも動作します。

【図】06.psd

ファイル選択ボタンをクリックする

【図】07.png

テキストファイルを選択する

【図】08.psd

「ファイル情報を表示」ボタンをクリックすると

【図】09.png

ファイルの情報が表示される

サンプル2


<h1>ファイル情報を表示する</h1>
<form action="./test.cgi" method="get">
    <input type="file" id="myFile" />
    <input type="button" id="fileInfo" value="ファイル情報を表示" />
</form>
<div id="result"></div>
<script>
    document.getElementById("fileInfo").addEventListener("click", function(){
        var fileData = document.getElementById("myFile").files[0];
        var txt = "ファイルの名前 :"+fileData.name+"<br />";  // ファイル名
        txt += "ファイルのサイズ:"+fileData.size+"<br />";   // サイズ(Bytes)
        txt += "ファイルの種類 :"+fileData.type+"<br />";   // 種類(MIME Type)
        document.getElementById("result").innerHTML = txt;
    }, true);
</script>


この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています