iOS6でのinput type=fileの注意点

iOS6からinput type=fileでファイルを選択できるようになりました。

実際に使用してみて、PC(Chrome)での動作と異なる点として以下がありました。
なお、選択したファイルは第5世代iPod touchのスクリーンショット(.pngファイル)です。

1.fileオブジェクトのnameプロパティに本来のファイル名ではなくimage.jpgという名称がセットされている。
2.typeプロパティにimage/jpegがセットされている。(image/pngを期待していたのに。)
3.sizeプロパティに本来のサイズより少ない値がセットされている。
4.lastModifiedDateプロパティに現在時刻がセットされている。(ファイルの更新日を期待していたのに。)

上記の内容から、ローカルのファイルを選択した時点で画像に何らかの変換がかかっていることが分かります。そのまま読めば、pngからjpgへ変換していて、変換によってlastModifiedDateに現在時刻が設定されるのだと思います。

これによって困るのは次のような場合です。

・選択ファイルの名称や更新日を利用して何らかの処理をしようとしていた。
・厳密な色情報の一致が必要な処理。(画像の変換によって色情報が変化するため。)

ユーザーエージェントで判断するなどして異常な動作にならないようにするとよいと思います。
また、次のような情報を公開している方がいらっしゃいました。
iOS6でメガピクセル画像をCanvasに描画するとおかしくなってしまう件と、その対処

http://d.hatena.ne.jp/shinichitomita/20120927/1348726674

今回、選択したファイルの更新日が欲しかったのですが諦めました。Canvasへの描画がおかしくなる点については、上記サイトで公開されているライブラリを利用させて頂きました。