CGI-BBS > CGI > Perl > アップロードの改造で特定ファイルをアップしたい。


カレッヂ
カレッヂ


質問者 島田  投稿日 2004/7/15(木) 08:49:29
はじめまして、Perl初心者の島田です。
よろしくお願いします。

今、ファイルのアップロード機能を持つプログラムを勉強しています。
その中で、分からない事があり投稿させて頂きました。

私が行き詰まっているのは、以下のような機能を持つプログラムです。

UP.CGIにアクセス
↓
ローカルディスクの特定の箇所にある(例:C:\TEST.JPEG)を
アップロード

ファイルのアップロードCGIは
=====upload.cgi
#!/usr/bin/perl

$BUFSIZE = 2048;

use CGI;

$q = new CGI;

$filename = $query{"GAZOU"} ; 

while(read($filename, $buffer, $BUFSIZE)) {
   $file .= $buffer;
   $file_size ++; 
} 

$file_size *= ($BUFSIZE / 1024);

open(OUT, "> test.jpg");
print(OUT $file); 
close(OUT); 

print "Content-type: text/html\n\n";
print "$file_size(KB)<br>\n";
print "<a href=\"test.jpg\">テスト</a>\n";
exit;
=====

=====upload.html

<HTML> 
<HEAD> 
<TITILE></TITLE> 
</HEAD> 
<BODY> 
<h2>ファイルのアップロード</h2> 
<FORM ACTION="up.cgi" ENCTYPE="multipart/form-data" METHOD="POST"><P> 
ファイル: <INPUT TYPE="file" NAME="GAZOU" SIZE="32"><BR> 
<INPUT TYPE="submit" VALUE="送信"> 
</FORM> 
</BODY> 
</HTML>

を見つけ、改造素としています。

このままでは、まずupload.htmlにアクセスし
ファイルの選択を行ってから、送信ボタンを押すことでファイルのアップを行わなければなりません。

私は、常に特定のファイル(例:C:\TEST.JPEG)をアップしたいので
upload.cgiの
$filename = $query{"GAZOU"} ; の部分を
$filename = $query{"C:\TEST.JPEG"} ;とでも改造するのかと試してみましたが
当然ダメ。
色々とページを見て
GET→POST変換を使い無理矢理
http://○○○/uploadp.cgi?GAZOU=C%3A%5Ctest.jpeg"とアクセスして
みたりしましたがこれもうまくいかず・・・

何か方法がありましたらご教授頂ければ幸いです。

よろしくお願い致します。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:(未選択)

回答者 dental  [削除]  投稿日 2004/7/15(木) 11:17:51
$filename = $query{"GAZOU"} ; NG 

$filename = $q->param('GAZOU') では?


質問者 島田  [削除]  投稿日 2004/7/15(木) 12:36:33
記述ミスです。
$filename = $q->param('GAZOU')ですね

返信(回答)する

 


Web裏技