AWSをガリガリいじってたら、通常の画像はimage/jpegなのに対して1*1のダメ画像はimage/gifなことにふと(今さら)気づいた。ので、画像置換のためのチェック方法にはContent-Type
を利用する方法もあるわけ。てかAmazon Hacksに載ってるらしいです(持ってない)。
Content-Type
がimage/jpegな場合はちゃんと画像がある(はず)なので、チェックするためのコードはこんなシンプルなものでOKなはず。
use LWP::Simple;
sub check_image {
my $url = shift;
my $header = head($url);
return 1 if $header->content_type eq "image/jpeg";
return 0;
}
とか書いたけど、ちゃんとした画像がimage/gifだったりすることもあるかもなぁ。いまいち一貫性に欠けるところがあるので信用できない(偉そう)。
Content-Length
でチェックする場合はこんなコード。
use LWP::Simple;
sub check_image {
my $url = shift;
my $header = head($url);
return 1 if $header->content_length > 807;
return 0;
}
どっちにしても、失敗する時は失敗する気がする。しかも結構頻繁に。
そもそもAWSがきちんとしたURLを返さないのが悪い。とか、いつも思うわけで。
ちなみに、アメリカからの輸入盤CDの画像は01で取れますが、イギリスからの輸入盤CDの画像は09だったり(ドイツからの輸入版CDとかは知らない)。マメ知識。輸入版なら01に置換すれば安牌というわけではないってこった。Content-Type
かContent-Length
でチェックしたほうが良いすね(コストかかるけど)。そもそもAWSが(以下略。