初心者だけどPerlが大好き

コードが世界を変える!

CGI.pmで添付ファイルを送るフォームをつくるの巻

まず 前回の メールフォームを デザイン的に
ファイル添付機能付きメールフォーム にしたいと思います。
その前に 単にファイルを添付してみて
ファイル名と ファイルハンドルを受け取る cgiを作りましょう
アップロードされたファイルは CGI モジュールが勝手に一時的な場所に保存してくれています。

書き込むフォームとしては
いつものスタイルシート'form.css'を使い mail9.cgiを作成します

#!/usr/bin/perl
use CGI;
$q = new CGI;
print $q->header(-charset => 'utf-8'),
$q->start_html(-title=>"Example CGI.pm Form", -style=>{'src'=>'form.css'}),
$q->h1(' Example CGI.pm Form'),
$q->start_div({-class=>"aaa"}),
$q->p('これは class="aaa" の部分です'),
$q->start_multipart_form(-action=>"mail8.cgi",-method=>'post'),
$q->filefield(-name=>'uploaded_file',
                -default=>'starting value',
                -size=>50,
                -maxlength=>80),
$q->reset,
$q->submit(-name =>'Action', -value =>'送信'),
$q->submit(-name =>'Action', -value =>'Scream'),
$q->end_multipart_form,
$q->end_div,
$q->start_div({-id=>"bbb"}), 
$q->h3('これは id="bbb" の部分です'),
$q->end_div,
$q->start_div({-class=>"ccc"}),
$q->h3('これは class="ccc" の部分です'),
$q->end_div,
$q->end_html;

適当に なにか 画像ファイルを参照してね

mail8.cgi を作ります

#!/usr/bin/perl
use CGI;
my $query = CGI->new();
#ファイル名
my $filename = $query->param('uploaded_file');
#ファイルハンドル
my $fh = $query->upload('uploaded_file');
print $query->header(-charset=>"utf-8");
print $query->start_html('Mail Form');
print $query->p("ファイルネーム$filename");
print $query->p("ファイルハンドル$fh");
print $query->end_html;