KENT-WEB サポートコーナー 過去ログ [ 0078 ]


記事No: 4756
投稿日: 2008/10/28(Tue) 10:44:36
タイトルファイルDLのcgi処理
ID情報: kaduno
投稿者: kaduno
URLhttp://kaduno.orz.hm/cgi/DL.cgi

こんにちは。
KENTさん作成のプログラムとは違うのですが、もし場違いでなければ、CGIの基本を教えて戴けると嬉しいです。

現在、自宅サーバー上に置いてあるファイルを、URLのalias設定ではなく、直接DISKのディレクトリ指定をしてダウンロードするようなプログラムを作成しております。

下記CGIは質問用に簡素化しておりますので、ダウンロードデータ($value_1)は固定。

この場合、test_data.lzhをダウンロードさせようとしているのですが、一旦CGIで読み込んで処理する関係で、ファイルサイズが大きくなると(800MB程度以上?)、CGIが処理出来ないようで、エラーになってしまいます。

このエラー回避の為に、CGIを介さないでDLする方法を探しているのですが、何か良い方法はありませんでしょうか?

aliasで実データへのURLを割り当てて、サーバー上でパスワードをつける方法ですと、不正アクセスのログが残りませんでして、そのログを残す為にもCGIで処理したいと考えております。

<DL.cgiの中身>

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ( ! $buffer ) {
print "Content-type: text/html\n\n";
print <<"---HTML---";
※HTML記述の書き込みNGということですので省略致します
 DL.cgiのソースを見ていただけると嬉しいです
---HTML---
} else {
$value_1 = "D:/tmp/tmp_2/test_data.lzh" ; # POSTされたパラメータは無視して設定済ファイルをDL
@value_2 = split (/\//,$value_1) ;
$filename = $value_2[$#value_2] ;
print "Content-type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=$filename\n\n";
binmode(STDOUT);
open(IN,"$value_1") ;
binmode(IN);
print <IN>;
close(IN);
}

場違いな質問でしたら申し訳ありません。


記事No: 4762
投稿日: 2008/10/28(Tue) 21:39:55
タイトルRe: ファイルDLのcgi処理
ID情報: teketen
投稿者: てけてん

サポートコーナ留意事項
http://www.kent-web.com/support/index.html
を再度お読み下さい。
> □以下の行為は禁止させていただきます。
> (1) 当サイトで配布するCGIとは無関係の質問

ご質問の内容は、これに該当致しますので、こちらでは回答することが出来ません。
ご了承下さい。


記事No: 4779
投稿日: 2008/10/30(Thu) 11:58:45
タイトルRe^2: ファイルDLのcgi処理
ID情報: kaduno
投稿者: kaduno
URLhttp://kaduno.orz.hm/cgi/DL.cgi

> http://www.kent-web.com/support/index.html
> を再度お読み下さい。

こんにちは。
"1"か"0"で厳密に判定するのでしたら、掲載cgiに管理番号を付けて、投稿時にその管理番号のあり/なしで弾いてくださればいいのにねっ♪


[検索ページ]