68user's page 掲示板

Prev< No. 2403> Next  [最新発言に戻る] [過去ログ一覧]
No. 2403 # ふくし [E-mail] 2002/01/09 (水) 21:35:24
いつもお世話になります。
CGI.pm でファイルのアップロードをするときの質問です。
html で

<html>
<body>
<pre>
アップロードするファイルを指定してください。
ファイル名は半角英数字で、空白を含まないでください。
</pre>
<form action="fileup.cgi" method="POST" ENCTYPE="multipart/form-data">
ファイル名:<input type="file" name="fname"><br>
<hr>
<input type="submit" value="OK">
</form>
</body>
</html>

というフォームを作って、

#! perl -w
# fileup.cgi

use CGI;

my($form) = new CGI;
print $form->header("text/html");

my($filename) = $form->param('fname');

$filename =~ m|([^\\]+)$|; # Windows のフルパスから基底ファイル名を取り出す
$newfile = "./gooddir/$1"; # gooddir の下に入れる。

open (OUTFILE,">$newfile") or die "Can't make serverside file because $!\n";
while ($bytesread = read($filename,$buffer,1024)) {
                print OUTFILE $buffer;
}
print <<EOD;
<pre>
アップロードが終了しました。ファイル「$filename」は
$newfile としてアップロードされました。
</pre>
EOD

という CGI を呼び出すとうまくいくのですが、
同じ CGI を、呼び出し側のフォームも CGI.pm で作って

#! perl -w

use CGI;
use strict;

my $title = 'ファイルをアップロードしてください';
my $q = new CGI;
print $q->header();
print $q->start_html();
print $q->start_form(-method=>'form', -action=>'./fileup2.cgi', -enqtype=>'multipart/form-data');

print $q->h2($title);

print '変換するファイルを指定し、[実行] をクリックしてください。<br>',
'(空白のあるファイル名、日本語のファイル名は避けてください)<br>',
$q->filefield(-name=>"fname"),
'<br>'x3;

print $q->submit(-name=>'submit',-value=>'実行');
print $q->endform;
print $q->end_html();

とやると、空ファイルが作成されるだけでうまくアップロードできません。
エラーログには何も出ません。
なにがおかしいのでしょうか?
何かおわかりでしたらご教示願います。

Prev< No. 2403> Next  [最新発言に戻る] [過去ログ一覧]