アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームからアップロードされてきた画像ファイルを、適当なファイル名を付けてJPGあるいはGIFの拡張子で保存し、HTMLファイルで保存した画像を一覧表示させようというCGIスクリプトを作りたいと考えています。

質問1
<FORM action="xxxx.cgi" method="post" enctype="multipart/form-data">
<INPUT type="file" name="gazo">
<INPUT type="submit">
</FORM>
とこんな具合のフォームから画像ファイル(JPGやGIF)をアップロードした時、
受け手のxxxx.cgiでは、この画像ファイルのデータをどのように受けたらよいのでしょうか?
read(STDIN,$_,$ENV{'CONTENT_LENGTH'});としたり、
あるいは
cgi-lib.plを読み込んで、$in{'gazo'}
というような形で画像ファイルのデータを受け取ればよいのでしょうか?

質問2
画像ファイルを受け取ったとして、フォームから送られてきた画像ファイルがJPGなのかGIFなのかを判別することは可能でしょうか?
可能ならば、判別するためのスクリプトはどんなものが考えられるでしょうか?
(フォームから送られてくる画像ファイルのデータの何をチェックすれば、JPGかGIFかを判別できるのでしょうか?)

もしご回答頂ける方がおられればご教授ください。よろしくお願いします。
なお、「既存のスクリプトを利用しなさい」というような回答やアドバイスならば不要でございます。

A 回答 (1件)

判別はGIFならファイルの先頭が「GIF89a」または「GIF87」になっています。


jpegでは多分ですが、ファイルの先頭から7Byte目から「JFIF」となっているはずです。

ただし、Macintoshで作成されたデータの場合は先頭に128Byte余計なデータ(リソースフォーク)が付いている場合があるので、その際は先頭128Byteを読み飛ばしてから比較してください。

お手持ちの画像を適当なバイナリエディタで開いてご確認ください。
    • good
    • 0
この回答へのお礼

ご回答いただき、とても感謝しております。有難うございます。
早速試して、ほぼ疑問を解決することができました。
Macintoshで作成されたデータのことまで解説していただき、
またひとつ勉強になりました。

お礼日時:2002/05/09 14:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!