【keyattach.cgi】

更新 新規 編集 設定 一覧
#!/usr/bin/perl
#------------------------------------------------------------------------------#
# 機能名 : KeyWiki Uploader
# 機能概要 : ファイルアップローダー
# 作成者 : Ryota Sasabe
# 作成履歴 : Ver1.00 2004.09.22 新規作成
#------------------------------------------------------------------------------#
my $HTML = "Content-type: text/html; charset=euc-jp\n\n";
$BaseDir = $ENV{'DOCUMENT_ROOT'};
require "$BaseDir/cgi-bin/lib/system.pl";
require "$BaseDir/cgi-bin/lib/common2.pl";
###################################################################
#◆初期設定
my $SaveDir = "$BaseDir/cgi-files/keywiki/attach"; # 保存フォルダ
my %html = &get_html_style('KeyWiki'); # html書式設定
my %info;
$info{'FileID'} = &get_primary_no('F'); # ファイルID
###################################################################
#◆ファイル保存処理
#□変数設定
my $pos1 = 0;
my $pos2 = 0;
my $pos3 = 0;
my $max_count = 0;
my $buf;
my $read_data;
my $delimiter;
#□バイナリモードでファイル編集
$remain = $ENV{'CONTENT_LENGTH'};
binmode(STDIN);
while($remain){
$remain -= sysread(STDIN,$buf,$remain);
$read_data .= $buf;
}
#□ファイルヘッダ処理
$pos2 = index($read_data,"\r\n\r\n",$pos1) + 4;
@headers = split(/\r\n/,substr($read_data,$pos1,$pos2 - $pos1));
foreach(@headers){
if($delimiter eq ''){
$delimiter = $_;
}elsif(m/^Content-Disposition: ([^;]*); name="([^;]*)"; filename="([^;]*)"/i){
if($3){
$info{'LocalFileName'} = $3;
if($info{'LocalFileName'} =~ m/([^\\\/]+)$/){
$info{'LocalFileName'} = $1;
}
}
}
}
#□ファイルが選択されていない場合、終了
if( !($info{'LocalFileName'}) || $info{'LocalFileName'} !~ m/\./){
&error("アップロードするファイルを選択してください。");
}
#□拡張子取得
$info{'Extension'} = lc( &get_split_item('\.',$info{'LocalFileName'},'last') );
#□ファイルボディ処理
$pos3 = index($read_data,"\r\n$delimiter",$pos2);
$info{'FileSize'} = $pos3 - $pos2;
#□ファイル書込み
open(FILE, "> $SaveDir/$info{'FileID'}.$info{'Extension'}") || &error("ファイルを作成できません");
binmode(FILE);
print FILE substr($read_data,$pos2,$info{'FileSize'});
close(FILE);
###################################################################
#◆アップロード情報ファイル書込み
$info{'UploadTime'} = &get_localtime();
$info{'UploadUserIp'} = $ENV{"REMOTE_ADDR"};
$info{'Browser'} = $ENV{"HTTP_USER_AGENT"};
&write_infofile("$SaveDir/$info{'FileID'}.dat",%info);
###################################################################
#◆完了画面出力
$HTML .= &get_html_header('アップロード完了','KeyWiki',%html);
$HTML .= "<hr color='$html{'BodyHrColor'}'>";
$HTML .= "下記のファイルをアップロードしました。<br>";
$HTML .= "<li>$info{'LocalFileName'}($info{'FileSize'} Byte)</li><br>";
$HTML .= "<br>";
$HTML .= "このファイルのファイルIDは『$info{'FileID'}』です。<br>";
$HTML .= "このIDをキーワード内容に貼り付けることでファイルへのリンクが作成されます。<br>";
$HTML .= &get_html_footer('KeyWiki',%html);
print $HTML;
exit;

更新者:りょうた 2004-09-28 (火) 00:30:47
作成者:りょうた 2004-09-24 (金) 11:44:08

■キーワード検索


KeyWiki Ver 0.6.9
(c) 2004 Ryota