・ファイルの日時
HTML5のファイル送信で、ファイルの更新日時を送り込むことができるようになりました。これまでもフォームから送られたファイルには、サイズと名前はありましたが、日時はありませんでした。HTML5でもその点は変わりませんが、送信時にJavaScriptでHTML5のfile-apiを使用して、ファイルの更新日時を取得できるようになりました。それを別のフォームID名で送り込めばいいわけです。これにより送られたファイルがサーバー上で日時を操作できるようになります。また同時にEXIFの撮影日時も取得するようにしました。これにより、画像に関しては撮影日時、更新日時、送信日時の順で有効なものをセットできるようになりました。
・HTML5でブラウザ処理が高度化
Ajaxによる画像の分割処理ができるようになりました。最近のデジカメ画像はものすごく大きいので、処理に大変時間がかかります。ともすると、Webではタイムアウトをおこします。そのためAjaxによる分割処理が必要なのですが、フォームの入力データが沢山あると、javascriptで一つづつ移すのは大変で、間違いのもととなります。
しかしIE11やChromeなどHTML5に完全対応したブラウザではfailesを含むformが一括扱えるようになりました。これにより、複雑で大量のフォームもAjaxで丸ごと送り出してやることができ、今回の分割処理を作ることができました。Googleのおかげで、MSも重い腰を上げ、ブラウザ処理が高度化しているといえます。FlashやオラクルJavaのような専用アプリの機能をどんどんカバーし始めています。
・ZIP圧縮の作り直し
ファイルの日時をサーバーで扱えるようになりましたが、それをそのままダウンロードすると日時は現在時刻になっていまします。FFFTPを使用すればそのまま書き込まれるようです。ブラウザで行うには、ZIP圧縮なら日時は変わらないだろうと考えていましたが、今までのプログラム(書庫を作りそこにファイルを追加する方法)では圧縮時刻になってしまうことが分かりました。ZIP圧縮は何もしなくても、ファイル情報がそのまま生きると思っていましたが、そうではなく、エントリーというものにファイル情報を設定しなおして、その中にデータを圧縮書き込みするようです。
今回、少し面倒ですがエントリーを作成して、その日時にファイル更新日時を設定してから、ファイルストリームを書き込む方法でプログラムを作り直しました。ついでにフォルダごと圧縮するfirstzipという方法(ファイル更新日時が生きる)も作り、「新ZIP圧縮」が揃いました。これでWEBサーバーに送り込まれたファイルの更新日時は各種処理の後、生かしたまま別のPCでダウンロードし、利用できます。
共有元ページ