【keyattach.cgiの編集】
設定
改名
履歴
G-System
/ 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;
■G-ID
■添付ファイルアップロード
KeyWiki
Ver 0.6.9
(c) 2004
Ryota