#!/usr/bin/perl -T # Small Simple Uploader (ssuploader) by yto (たつを) # Version 1.1: http://chalow.net/2008-08-12-1.html # Version 1.0: http://chalow.net/2008-07-24-3.html # Version 0.0: http://nais.to/~yto/tools/ssupload/ [obsolete] use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); use POSIX qw(strftime); use utf8; use HTML::Template; use File::Basename; binmode STDOUT, ":utf8"; # 準備: mkdir up; chmod 777 up my $up_dir = "up"; my $q = new CGI; print $q->header(-charset => 'UTF-8'); my $fh = $q->param('file_name') || ""; my $mode = $q->param('mode') || ""; my $message; if ($mode eq "up" or $mode eq "delete") { if ($fh eq "") { $message = "ファイルを指定してください。"; } else { fileparse_set_fstype("MSDOS"); if (basename($fh) =~ m{^([^\x00-\x19\x7e-\xff\\/]+)$}) { my $fn = $1; $fn =~ s/^(.{100}).+$/$1/; my $path = "$up_dir/$fn"; if (-f $path) { if ($mode eq "delete") { unlink $path; } else { $message = "同名のファイルが存在するので、" ."一度削除してからアップしてください。"; } } elsif ($mode eq "up") { open(my $upfh, ">", $path) or die; flock($upfh, 2); while (<$fh>) { print $upfh $_; } close $upfh; } } else { $message = "ファイル名に日本語などの" ."非対応文字が混じっています。"; } } } $q->delete_all(); my @file_list = sort {$b->{mtime} <=> $a->{mtime}} map {{ name => basename($_), path => $_, size => -s $_, mtime => (stat $_)[9], timestamp => strftime("%y-%m-%d %H:%M:%S", localtime((stat $_)[9])), }}<$up_dir/*>; my $template = join("", ); my $t = HTML::Template->new(scalarref => \$template, gloval_vars => 1, die_on_bad_params => 0); $t->param(file_list => \@file_list); $t->param(reload_url => $q->self_url); $t->param(message => $message) if $message; print $t->output(); __DATA__ Small Simple Uploader

Small Simple Uploader

表示の更新
ファイル名タイムスタンプサイズ
表示の更新