
テキストと画像を回答するHTMLで書かれたアンケートがあります。回答は、
<form name="a" method="post" action="cgitest.cgi" enctype="multipart/form-data">
つまり、POSTメソッド、multipart/form-dataモードで cgitest.cgi に回答を送ります。
perlで作成したCGIでテキストは正しく受信できましたが、画像がファイルの中身ではなくファイル名になってしまいます。画像ファイルを受信する方法を教えてください。
なお、CGIには、画像ファイルのバイナリデータも送信されていることは、別途C言語で記載した確認プログラムで確認済みです。
----HTML----
<!DOCTYPE html>
<html lang="ja-JP">
<head>
<meta charset=Shift_JIS>
</head>
<body>
<form name="a" method="post" action="cgitest.cgi" enctype="multipart/form-data">
氏名 : <input type="text" name="ans1">
困ったときの写真:<input type=file name="ansfig1" onChange="this.form.disp.src=window.URL.createObjectURL(this.files[0])">
<br><img name=disp>
<input type="submit" value=" 送信 ">
<input type="reset" value=" 取消 ">
</form>
</body>
</html>
----CGI-----
#!"D:\lib\xampp\perl\bin\perl.exe"
use CGI;
my $q = new CGI;
#フォームからのデータ読み込み
my $ans1 = $q->param('ans1');
my $fig1 = $q->param('ansfig1');
$ans1file = 'ans1.txt';
open(OUT, ">$ans1file") or die "$!";
print OUT $ans1;
$ans2file = 'ans2.jpg';
open(OUT, ">$ans2file") or die "$!";
print OUT $fig1;
---- 参考 CGIに渡されるデータ確認用 ---------
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void)
{
int c;
FILE *fp;
fp = fopen("temp.dat","wb");
setmode(fileno(stdin), O_BINARY);
while((c=fgetc(stdin)) != EOF ) {
fputc(c,fp);
}
fclose(fp);
return 0;
}
No.1ベストアンサー
- 回答日時:
CGI.pmのマニュアルに書いてあると思います。
http://search.cpan.org/dist/CGI/lib/CGI.pm#Proce …
和訳:
http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod# …
CGI.pmはアップロードされたファイルを一時的にファイルに保存し、$q->uploadでそのファイルのハンドルを取れるようにするようです。
回答ありがとうございます。
my $fig = $q->param('ansfig');
では、ファイルの中身ではなくファイル名が取得されるのですね。
>$q->uploadでそのファイルのハンドルを取れるようにするようです。
ファイルの中身を取得するには、ファイルアップロード用の IO::Handle 互換のハンドルを
$lightweight_fh = $q->upload('ansfig');
my $io_handle = $lightweight_fh->handle;
で取得して、
$bytesread = $io_handle->read($buffer,1024)
で1024バイト単位にファイルの中身を取得する
ということですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
ChatGPTの性能は昔に比べて上が...
-
フォームを再送信しますか?
-
VBAで条件から範囲を指定して色...
-
ChatGPT
-
chatGPTみたいに画像生成出来る...
-
サーバーのエラーでおしえてく...
-
perlで書いたcgiでsqliteの使い...
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
CGIって何ですか?簡潔に教えて...
-
フォームラン(https://form.ru...
-
iDeCo
-
皆さんはGUCCIはハイブランドだ...
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(Perl)ReadParseによるハッシ...
-
確認ページが表示できない
-
別サーバーのcgiへバイナリデー...
-
質問ページ(CGI)に行く時にフ...
-
htmlのフォームからcgiにデータ...
-
フォーム入力後の確認画面表示...
-
携帯電話のセッション管理
-
さくらインターネットのCGI...
-
WEB上のボタンをクリックしてサ...
-
perl cgiの変数の受け渡しがで...
-
ファイル名でなく、ファイルの...
-
異なるformで同一のnameは使用...
-
cgi-libを使って変数値渡しをし...
-
htmlからcgiに変数を配列にして...
-
HDMLでCGIを使おうと思うのです...
-
perlで自動ログインをしたいが...
-
チャットでの、自動カーソル入力
-
if構文を追加するとうまくうま...
-
リンクからのPOST送信について
-
VBで表示したホームページの...
おすすめ情報