Tadashi Okoshi
slash****@users*****
2005年 6月 17日 (金) 18:56:51 JST
Index: affelio/lib/Affelio/App/Admin/EditSkins.pm diff -u affelio/lib/Affelio/App/Admin/EditSkins.pm:1.1.1.1 affelio/lib/Affelio/App/Admin/EditSkins.pm:1.2 --- affelio/lib/Affelio/App/Admin/EditSkins.pm:1.1.1.1 Tue Jun 14 12:53:29 2005 +++ affelio/lib/Affelio/App/Admin/EditSkins.pm Fri Jun 17 18:56:50 2005 @@ -6,7 +6,7 @@ # http://affelio.jp/ (Japan) # http://affelio.jp/ (USA and other area) # -# $Id: EditSkins.pm,v 1.1.1.1 2005/06/14 03:53:29 slash5234 Exp $ +# $Id: EditSkins.pm,v 1.2 2005/06/17 09:56:50 slash5234 Exp $ package Affelio::App::Admin::EditSkins; { @@ -55,39 +55,53 @@ sub upload{ my $af = shift; my $cgi = shift; + use File::Basename; debug_print("EditSkins:upload: start."); my $filename = $cgi->param('uploadingfile'); my $filetype = $cgi->uploadInfo($filename)->{'Content-Type'}; + my $basename = ""; #basename($filename,""); my $buffer=""; my $filecontent=""; while(my $bytesread = read($filename, $buffer, 2048)){ $filecontent .= $buffer; } - - my $ostype = $cgi->param('ostype'); - use File::Basename; + my $ostype = $cgi->param('ostype'); fileparse_set_fstype("$ostype"); - my $basename = basename($filename,""); + my $euc_filename = Jcode->new($filename)->euc; + $euc_filename =~ s|\\|/|g; + debug_print("EditSkins:upload: euc_filename = $euc_filename"); + + if($euc_filename =~ /([\w\-]+\.zip)$/){ + $basename = ($1); + } + debug_print("EditSkins:upload: ostype = $ostype"); debug_print("EditSkins:upload: filetype = $filetype"); debug_print("EditSkins:upload: filename = $filename"); debug_print("EditSkins:upload: basename = $basename"); - if($filetype eq "application/zip" || $filename =~ /\.zip$/){ + if($filetype =~ /zip/ || $filename =~ /\.[zip|ZIP]$/){ + debug_print("EditSkins:upload: OK. This is a zip file. "); + debug_print("EditSkins:upload: Extracting [$basename]..."); + open(FILEOUT, "> $af->{site__fs_root}/skins/$basename"); binmode(FILEOUT); print(FILEOUT $filecontent); close(FILEOUT); system("cd $af->{site__fs_root}/skins; unzip $basename"); - system("cd $af->{site__fs_root}/skins; rm -rf $basename"); + + debug_print("EditSkins:upload: Extracting [$basename]...DONE."); }else{ + debug_print("EditSkins:upload: This is a NOT zip file. [$basename]"); + debug_print("EditSkins:upload: Putting [$basename]..."); + open(FILEOUT, "> $af->{site__fs_root}/skins/$af->{userpref__skin}/$basename"); binmode(FILEOUT); print(FILEOUT $filecontent);