CGI-BBS > CGI > Perl > perlでファイルアップロードができない(cgi-lite.pm使用)


カレッヂ
カレッヂ


質問者 dreamerYK  投稿日 2005/7/15(金) 17:25:56
こんにちは。連続での質問ですがよろしくお願いします。

テキストファイルのアップロードプログラムを作っていますが、以下のような現象になります。

【サーバOS】
windowsNT 4.0 

【サーバソフト】
AN_HTTPD Ver1.42m

【アップロードソース(流用させていただいています)】
※cgi-lite.pmを使用
sub file_upload{
	use CGI::Lite;

	# ファイル保存ディレクトリ関連
	my $dir = './upload_file';
	unless (-d $dir) {
		mkdir $dir, 0777 or die $!;
	}

	# フォームデコード
	my $cgi=new CGI::Lite;
	$cgi->add_timestamp(0);
	$cgi->set_directory($dir) or die $!;
	$cgi->set_platform ('NT');
	my %formdata = $cgi->parse_form_data;

	# 結果データ$result生成
	my $result = '';
	if (%formdata) {
		$result = "<hr>\n<table cellspacing=0 cellpadding=5 border=1>\n";
		foreach (sort(keys(%formdata))) {
			$result .= "<tr><td>$_</td><td>$formdata{$_}</td></tr>\n";
		}
		$result .= "</table>\n";
	}

	# 出力

	print "<!-- リスト -->\n";
	print "<hr>\$list=$list<hr>\n";
	print "<!-- アップロードフォーム -->\n";
	print "<form action='./$thisfile' ENCTYPE='multipart/form-data' method='POST'>\n";
	print "File : <input type='file' name='file'><input type='submit'>\n";
	print "<input type='hidden' name='cmd' value='show_top'>\n"; #処理指標:sub file_uploadへ戻す処理
	print "</form>\n";
	print "<!-- 結果 -->\n";
	print "$result\n";

}


【現象】
・上記スクリプトで、保存先フォルダがない状態から実行させた場合、
正常にフォルダが作成されるのですが、肝心のテキストファイルがアップロードされません。
また、POSTでの受け渡しにおいて、処理指標にしているname=cmd、value=show_topの値が、
私の頭の中ではcmd=show_topになるはずが、cmd=  になっている(値なし)ようです。
ENCTYPE='multipart/form-data'のフレーズを外すと、なぜか値がcmdに渡されます。
色々調べてみたんですが、どうもうまくいきません。
アップロードがうまくいかない原因と、cmdに値がわたらない原因があれば、
ご教授いただけますでしょうか?
よろしくお願いします。

【習熟度】初めて

回答者 LR  [削除]  投稿日 2005/8/5(金) 09:41:40
サーバーソフトを、Apacheに変更してみては?
ANHTTPは不安定でおすすめできません。

アップロードのプログラムもためしに別のものを使用してみては?
http://www.tryhp.net/perllib.htm

返信(回答)する

 


Web裏技