- ベストアンサー
HTTP上にあるファイルの更新日時
タイトルのまんまなんですが、HTTP上にあるファイルをダウンロードして保存するということをやりたいのですが、それをダウンロードする前にダウンロードをしたいファイルの最終更新日時の情報を習得したいなと思うのですが、どのようにプログラムを書いてみればよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
・HTTPのサイトに接続する ・HEADリクエストを送る ・返されたヘッダーレスポンスから、ファイルの更新日を得る ・更新日より後にダウンロード済みなら終る ・GETリクエストを送る ・返されたヘッダーレスポンスから、ファイルサイズや日付を得る ・引き続いて返されるボディーレスポンスを、仮のファイル名でテンポラリに保存する ・ボディーレスポンスが終了したら、テンポラリに保存したサイズと、ヘッダーレスポンスに書いてあったサイズを比較する ・サイズが不一致なら、ダウンロードが途中で強制終了したか、アップロード時にファイルが壊れたかで、ダウンロードが完了していないので、ダウンロード失敗として処理する ・サイズが一致したら、ダウンロード成功として、テンポラリに一時保存した物を、ダウンロード用フォルダに移動し、正しいファイルネームにリネームする ・正しいファイルネームにリネームしようとした時に、同一名称のファイルが同じフォルダになく、無事にリネーム出来れば終了 ・同一名称のファイルが同じフォルダにあり、リネームが失敗した場合は以下の処理をする ・同一名称のファイルが、別のサイトからダウンロードしたまったく別のファイルで、偶然にファイル名が衝突していた場合、ファイル名の後ろに連番を足すなどで、ファイル名の重複を回避する ・同一名称のファイルが、同じサイトからダウンロードした古いファイルで、上書きで消しても構わない場合、古い物を消去してからリネームする ・HTTPのサイトから切断する ここで必要になるのは ・一時保存用のフォルダ ・ダウンロード用のフォルダ ・ダウンロード用のフォルダの中にある、ダウンロード済みのファイルが、いつ、どこのサイトからダウンロードして、ファイル名重複の為に何番まで連番を足したか、次に使える連番は何番なのか、連番を付加する前の本当のファイル名は何だったかなどを記録した、管理用のデータを記録したファイル など。 ぶっちゃけ「ブラウザを作る」のと同じだけのテクニックとノウハウが必要。 指定しておいたサイトを自動巡回して画像やファイルを自動ダウンロードしてくれるツールは、もう既に存在するので、新たに作るより、それダウンロードして使った方が早いです。
その他の回答 (3)
- kasukaniwa
- ベストアンサー率25% (1/4)
脇から失礼します。 「指定しておいたサイトを自動巡回して画像やファイルを自動ダウンロードしてくれるツール」 は、どこのサイトにあるでしょうか。 どうかご教示をお願いします。
- chie65536
- ベストアンサー率41% (2512/6032)
追記。 先ほどの処理は、サーバーが返すエラーについては考慮してない。 HEADリクエストに対して返されるレスポンスが「200」の成功を示すレスポンスではない場合、例えば「403」や「404」など、ファイルが無かったり、アクセス権が無かったりする場合は、その場で接続を切って終了しなければならない。
- kyanasaki
- ベストアンサー率42% (168/396)
<SCRIPT language="JavaScript"> <!-- document.write("このページの更新日時は、" + document.lastModified +"です。") //--> </SCRIPT> などで出来るそうですが、javaScript未対応のブラウザでは表示されません・・・。
お礼
お礼が遅くなりまして申し訳ございません。 いろいろと試行錯誤した結果、 今の私の力ではweb上では更新日時を確認することできませんでした。 ただ、ダウンロードはできたので、ダウンロードをしてから更新日時を確認するという形をとることにしました。 ご丁寧な指導ありがとうございました。