フォームからアップロードされてきた画像ファイルを、適当なファイル名を付けて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かを判別できるのでしょうか?)
もしご回答頂ける方がおられればご教授ください。よろしくお願いします。
なお、「既存のスクリプトを利用しなさい」というような回答やアドバイスならば不要でございます。
No.1ベストアンサー
- 回答日時:
判別はGIFならファイルの先頭が「GIF89a」または「GIF87」になっています。
jpegでは多分ですが、ファイルの先頭から7Byte目から「JFIF」となっているはずです。
ただし、Macintoshで作成されたデータの場合は先頭に128Byte余計なデータ(リソースフォーク)が付いている場合があるので、その際は先頭128Byteを読み飛ばしてから比較してください。
お手持ちの画像を適当なバイナリエディタで開いてご確認ください。
ご回答いただき、とても感謝しております。有難うございます。
早速試して、ほぼ疑問を解決することができました。
Macintoshで作成されたデータのことまで解説していただき、
またひとつ勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(ソフトウェア) コマンドプロンプトについて教えてください。 状況: 画像編集ソフト上でネットから保存した画像を使うの 3 2022/05/26 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaでCSVファイルを高速に読む...
-
VBAでCSVファイルの特定行を書...
-
形態素解析の解析内容を各品詞...
-
CSVが可変長の場合の検索方法
-
vNoteのBODY部の取得(長めです)
-
openした後、closeしないでプロ...
-
VBAでCSVファイルを途中行まで...
-
VB6.0でDB接続する際に切断時の...
-
プログラミング(流れ図とコー...
-
拡張子 ”log” と ” dat” の違い
-
VBAコードを張り付け後のエクセ...
-
バッチファイルの作り方(CSV→...
-
batファイルでrenameができませ...
-
close()で例外が投げられる理由
-
vba dir の相対パス
-
MATLABのm-fileについて
-
文字列をカウントする方法
-
至急お願いします。C言語で.img...
-
一定時間が経過したフォルダの削除
-
画像アップロード機能を追加し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
MATLAB グローバル変数の宣言
-
エクセルVBA コードが同じでも...
-
Perlの変数に文字数制限(容量...
-
perlで、後ろの行を読んで、前...
-
C言語でのファイルのデータ更...
-
2つのCSVファイルをマッチング
-
VB6.0でDB接続する際に切断時の...
-
CSVが可変長の場合の検索方法
-
perlで容量の大きいCSVファイル...
-
1ファイルずつ読み込みたい
-
VBScriptでファイル保存先のデ...
-
perl で googleAPIを呼び出す...
-
C#でCSVファイルを逐一更新したい
おすすめ情報