CGI-BBS > CGI > Perl > CGI.pm でアップロードの際の一時ファイルを削除したい。


カレッヂ
カレッヂ


質問者 かんご  投稿日 6/24(火) 15:56:38
CGI.pm を使ってファイルのアップロードを実現しようとしてます。
ファイルのアップロード自体は問題ないのですが、アップロードw
行うと、CGI ファイル(xxx.pl)と同じディレクトリに、CGITemp?????
(?は数字)と言うファイルが出来ます。

なお、CGI のソースは以下の通りです。
use CGI;
$QUERY = new CGI;
@SPLIT = ();
@SPLIT = split(/\\/, $FILENAME);
while(read($FILENAME, $LINE, 2048)) { $FILEBODY .= $LINE; } 
$FILENAME = $SPLIT[-1];
open(OUT, ">$TEMP_DIR/$FILENAME"); 
binmode(OUT); 
print OUT $FILEBODY; 
close(OUT); 

このファイルが出来ないようにしたいのですが、お知恵を拝借
できないでしょうか?

よろしくお願いします。

プロバイダ参照:自宅
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:notepad
FTPソフト:
サーバ移転:していない
改造:していない
CGI習熟度:expert

質問者 かんご  [削除]  投稿日 6/24(火) 17:48:50
自己レスです。

解決しました。Windows の場合、以下のread で$FILENAME を
ファイルハンドラとして開いているため、明示的に閉じてあげる
必要があるそうです。


use CGI;
$QUERY = new CGI;
@SPLIT = ();
@SPLIT = split(/\\/, $FILENAME);
while(read($FILENAME, $LINE, 2048)) { $FILEBODY .= $LINE; } 
close($FILENAME);
~~~~~~~~~~~~~~~~~
$FILENAME = $SPLIT[-1];
open(OUT, ">$TEMP_DIR/$FILENAME"); 
binmode(OUT); 
print OUT $FILEBODY; 
close(OUT); 

なお、以下のページにこの件が記載されていました。
http://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html

このページは終了したので返信(回答)は書きこめません
 


Web裏技