if($g_nIsAllWAVsFile_UploadSuccess < 0 || $g_nUploadSuccess < 0)
{
$logfilename = 'Upload_Fail_'.shortTimeString(time).'.log';
$log_cnt = 0;
LOG("");
LOG("FTP自动上传文件 Version 0.1");
LOG("");
LOG("上传结果:失败。失败原因:$g_strLastError。n花费:$span 秒, 总共处理了 $total_files 个文件, 其中 $processed_files 上传成功, 跳过了 $skipped_files 个文件。");
LOG("");
closeLogfile();
}
##---------------------------#
## 以下是子函数体的定义
##----------------------------##
##
## 函数名称:processFiles
## 功能:
## 得到指定文件夹下的所有文件以及子文件夹,然后依次处理它们。
##
## 程序员: Uwe Keim
##
## 历史记录:
## 编号 日期 作者 备注
## 1 2000 Uwe Keim
##
##----------------------##
sub processFiles
{
my $srcdir = fsToBs($File::Find::dir);
my $srcpath = fsToBs($File::Find::name);
my $base = fsToBs($File::Find::topdir);
foreach my $exclude (@wc_exclude) {
if ( index($srcpath, $exclude)>-1 ) {
$File::Find::prune = 1 if -d $srcpath;
return;
}
}
# no DIRECT processing of directories.
if ( -d $srcpath ) {
return;
}
my $dstdir = $srcdir;
my $dstpath = $srcpath;
$dstdir =~ s{Q$baseE}{$ftp_dir}is;
$dstpath =~ s{Q$baseE}{$ftp_dir}is;
$dstdir = bsToFs($dstdir);
$dstpath = bsToFs($dstpath);
processFile($srcpath,$dstpath,$dstdir);
}
sub processFile
{
my ($src,$dst,$dstdir) = @_;
$total_files++;
LOG("正在处理文件 $total_files "$src"...");
# --------------------
# check time.
my $need_upload = 0;
# create time.
my $t1 = $lookup{$src};
my $t2 = timeString(stat($src)->mtime);
if ( not defined $t1 ) {
$lookup{$src} = $t2;
$need_upload = 1;
} else {
my $delta_sec = calcDeltaSeconds($t1,$t2);
$need_upload = 1 if $delta_sec>5; # 5 seconds as tolerance.
}
# --------------------
if ( $need_upload>0 ) {
$processed_files++;
LOG("正在上传文件:从源 "$src" 到目标 "$dst"...");
$ftp->mkdir($dstdir,1);
$ftp->put($src, $dst) or $g_nIsAllWAVsFile_UploadSuccess=-1;
if($g_nIsAllWAVsFile_UploadSuccess < 0)
{
LOG("不能上传文件:从源 "$src" 到目标 "$dst" (dst-dir: "$dstdir")。n");
if($@)
{
LOG("错误原因是:$@n");









