Changeset 17548
- Timestamp:
- 08/12/08 23:20:47 (5 months ago)
- Files:
-
- 1 modified
-
lang/perl/misc/ssuploader.cgi (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/misc/ssuploader.cgi
r16263 r17548 1 #!/usr/bin/perl 2 # Small Simple Uploader 3 # since 2008-07-24 by yto (たつを) 4 # (old version: http://nais.to/~yto/tools/ssupload/ [obsolete]) 1 #!/usr/bin/perl -T 2 # Small Simple Uploader (ssuploader) by yto (たつを) 3 # Version 1.1: http://chalow.net/2008-08-12-1.html 4 # Version 1.0: http://chalow.net/2008-07-24-3.html 5 # Version 0.0: http://nais.to/~yto/tools/ssupload/ [obsolete] 5 6 use strict; 6 7 use warnings; … … 13 14 binmode STDOUT, ":utf8"; 14 15 15 # 準備 : mkdir $outputdir; chmod 777 $outputdir16 my $ outputdir = "up";16 # 準備: mkdir up; chmod 777 up 17 my $up_dir = "up"; 17 18 18 19 my $q = new CGI; … … 22 23 my $mode = $q->param('mode') || ""; 23 24 24 my $fn = basename($fh);25 my $outputfn = "$outputdir/$fn";26 my $timestamp = strftime "%y-%m-%d %H:%M:%S", localtime;27 25 my $message; 28 29 if ($mode eq "up") { 26 if ($mode eq "up" or $mode eq "delete") { 30 27 if ($fh eq "") { 31 28 $message = "ファイルを指定してください。"; 32 } elsif ($fn =~ /[\x00-\x19\x7e-\xff]|\.\./) {33 $message = "ファイル名に日本語文字などの被対応文字が混じっています。";34 } elsif (-f $outputfn) {35 $message = "同名のファイルが存在するので、一度削除してからアップしてください。";36 29 } else { 37 open(F, ">", $outputfn) or die; # memo: perl -T 38 flock(F, 2); 39 while (<$fh>) { 40 print F $_; 30 fileparse_set_fstype("MSDOS"); 31 if (basename($fh) =~ m{^([^\x00-\x19\x7e-\xff\\/]+)$}) { 32 my $fn = $1; 33 $fn =~ s/^(.{100}).+$/$1/; 34 my $path = "$up_dir/$fn"; 35 if (-f $path) { 36 if ($mode eq "delete") { 37 unlink $path; 38 } else { 39 $message = "同名のファイルが存在するので、" 40 ."一度削除してからアップしてください。"; 41 } 42 } elsif ($mode eq "up") { 43 open(my $upfh, ">", $path) or die; 44 flock($upfh, 2); 45 while (<$fh>) { 46 print $upfh $_; 47 } 48 close $upfh; 49 } 50 } else { 51 $message = "ファイル名に日本語文字などの" 52 ."被対応文字が混じっています。"; 41 53 } 42 close F;43 54 } 44 } elsif ($mode eq "delete") {45 unlink $outputfn;46 55 } 47 56 … … 54 63 mtime => (stat $_)[9], 55 64 timestamp => strftime("%y-%m-%d %H:%M:%S", localtime((stat $_)[9])), 56 }}<$ outputdir/*>;65 }}<$up_dir/*>; 57 66 58 67 my $template = join("", <DATA>); … … 84 93 </form> 85 94 86 <div><a href="<TMPL_VAR name=reload url>">表示の更新</a></div>95 <div><a href="<TMPL_VAR name=reload_url>">表示の更新</a></div> 87 96 88 97 <div style="margin:10px"> … … 105 114 </div> 106 115 107 <div><a href="<TMPL_VAR name=reload url>">表示の更新</a></div>116 <div><a href="<TMPL_VAR name=reload_url>">表示の更新</a></div> 108 117 </body> 109 118 </html>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)