<input type="file">で作成する事のできるファイルアップロードフォームですが、選択されたファイルに関する情報をJavaScriptから取得できるよう、仕様が追加されました。
なので、選択されたファイルの名前やファイルサイズにアクセスするJavaScriptコードを以下のように書けます。
function filesSelected() {
//filesプロパティから、選択されたファイルの情報を取得
var files = document.getElementById("file").files;
for (var i = 0; i < files.length; i++) {
var fileName = files.item(i).fileName;
var fileSize = files.item(i).fileSize;
alert("name:" + fileName + " size:" + fileSize);
}
}
このコードが動作するのは、現時点だとFirefox3.5, Safari4, Chrome3でした(IE8,Opera10は未実装)。
filesプロパティは、FileListと言う疑似配列で、一つ一つの要素はFileです。
こうしたFile APIに関しては、こちらが仕様書となるようです。
一般公開されているバージョン:http://www.w3.org/TR/file-upload/
最新ドラフト:http://dev.w3.org/2006/webapi/FileUpload/publish/FileAPI.xhtml
fileName, fileSizeと言ったプロパティ名は、一般公開されているバージョンに記載されているものです。
最新ドラフトだと、name, sizeといったプロパティ名になっています。
他にも、ファイル内容をバイナリ形式やテキスト形式で取得するためのgetAsBinary()やgetAsText()と言ったメソッドも持つようです。
Gearsで実現できていた、XMLHttpRequestによるファイルアップロードを一般のブラウザで実現できる日も近そうですね。
以上、小ネタでした~
===
コミュニティ活性化のため、HTML5に関するネタを一日一回何かつぶやいてみます(^^)
しょぼいネタでもご容赦ください。賛同者募集中!
##############################################
白石俊平
Blog:http://d.hatena.ne.jp/Syunpei/
mixi:http://mixi.jp/show_profile.pl?id=3989166
Twitter:Shumpei
(マイミク申請、Twitterフォローはお気軽にどうぞ!)
株式会社あゆた
http://ayuta.co.jp/index.html
##############################################