dポイントプレゼントキャンペーン実施中!

表題の機能の使用に失敗してしまいます。
[以下、フォーム部分]
<form action="upload.cgi" method="post" enctype='multipart/form-data'>
<input type="file" name="data" /> <input type=submit />
</form>

[upload.cgi(データの送信先)]
#!/usr/bin/perl

use CGI qw(:standard);
$data = param('data');
while (read($data, $buffer, 2048)) { $file .= $buffer; }

open UP, "> ./test.txt";
print UP $file;
close UP;

print <<"EOF"
Content-type: text/html

<html>
<body>
Files have been uploaded.<br>
$filename<br>
</body>
</html>

EOF

このフォームを実行すると、HTML上には以下の出力が行われます。
---------------------------------------
Files have been uploaded.
C:\Documents and Settings\ht-sato\デスクトップ\aaa.txt

しかし、肝心のファイルはサーバ上に作成されていません。
書き込み権が問題かとも思い、各ファイルやディレクトリの
パーミッションも確認しましたが、書き込み可能となっていました。
どうか、解決するためのアドバイスを頂けますでしょうか。

A 回答 (1件)

提示されているソースには問題なさそうです。



症状からすると出力ファイルのopenが失敗しているっぽいですのでもう一度ファイルを出力するディレクトリのパーミッションを確認してみてはどうでしょうか?

なお、ファイルのopenで失敗しているかは
open UP, "> ./test.txt";

open UP, "> ./test.txt" or dir;
こんな感じでopenでエラーになっているか確認してみては。

openで問題が起きていなかったとすると・・・
これは本当に自身がないけど、作ったファイルにパーミッションを正しく設定しないとCGI実行後に無効にされるようなサーバがあったかも。
chmodでパーミッションを設定してみては?

この回答への補足

さっそく返信いただき、ありがとうございます。
月曜まで試す環境がないので、テストしたら、さっそく報告したいと思います。

補足日時:2005/06/03 04:20
    • good
    • 0
この回答へのお礼

私のパーミッション確認に見落としがありました。
(お恥ずかしいかぎりです・・・)
アップロードに成功するようになりました。

or die; をつけることで、ハッキリと分かりました。
有用な情報、ありがとうございました!

お礼日時:2005/06/06 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!