package MYFTP;
use Net::FTP;
sub new
{
my $class = shift;
#一个空的引用
my $ref = {};
#将引用和对象绑定
bless($ref,$class);
#返回引用
return $ref;
}
#FTP下载文件
sub DownLoadFtpFile
{
my $ref = shift;
my $FtpServer = shift;
my $Ftpport = shift;
my $Ftpuser = shift;
my $FtpPassWord = shift;
my $FtpLocalSavePath = shift;
my $FtpRemotePath = shift;
my @FtpDownloadFile = @_;
print "\nFtp 正在建立连接 IP:$FtpServer 端口:$Ftpport 用户名:$Ftpuser  密码:$FtpPassWord \n";
my $ftp = Net::FTP->new($FtpServer, Port=>$Ftpport, Debug => 0, Timeout => 600) or die "Cannot connect.\n";
print "\n连接成功,开始登陆.......\n";
$ftp->login($Ftpuser, $FtpPassWord) or die "Could not login.\n";
print "\n登陆成功,开始下载文件.......\n";
$ftp->cwd($FtpRemotePath) or die "Cannot change working directory.\n";
#文件全部下载成功退出死循环
while(@FtpDownloadFile)
{
my $Index = 0;
my $ArraySize = @FtpDownloadFile;
foreach my $File (@FtpDownloadFile)
{
my $FtpDownLocalSavePath = $FtpLocalSavePath . "/$File";
my $Return = $ftp->get($File, $FtpDownLocalSavePath);
if($Return eq undef)
{
print "\n下载$File文件失败\n";
next;
}
print "\n下载$File文件成功\n";
delete $FtpDownloadFile[$Index];
$Index++;
}
}
print"\n全部下载成功.......\n";
$ftp->quit;
}
#FTP上传载文件
sub UpLoadFtpFile
{
my $ref = shift;
my $FtpServer = shift;
my $Ftpport = shift;
my $Ftpuser = shift;
my $FtpPassWord = shift;
my $FtpRemotePath = shift;
my @FtpUploadFile = @_;
print "\nFtp 正在建立连接 IP:$FtpServer 端口:$Ftpport 用户名:$Ftpuser  密码:$FtpPassWord \n";
my $ftp = Net::FTP->new($FtpServer, Port=>$Ftpport, Debug => 0, Timeout => 600) or die "Cannot connect.\n";
print "\n连接成功,开始登陆.......\n";
$ftp->login($Ftpuser, $FtpPassWord) or die "Could not login.\n";
print "\n登陆成功,开始上传文件.......\n";
$ftp->cwd($FtpRemotePath) or die "Cannot change working directory.\n";
#文件全部下载成功退出死循环
while(@FtpUploadFile)
{
my $Index = 0;
foreach my $File (@FtpUploadFile)
{
my $Return = $ftp->put($File);
if($Return eq undef)
{
print "\n上传$File文件失败\n";
next;
}
print "\n上传$File文件成功\n";
delete $FtpUploadFile[$Index];
$Index++;
}
}
print"\n全部上传成功.......\n";
$ftp->quit;
}
#模块结束标识
1;

 

 

 

 

 

 

 

use MYFTP;
my $server = "10.92.209.156";
my $port = "21";
my $user = "root";
my $pw = "root";
my $LocalSavePath = "E:/11111/Test";
my $RemotePath = "/home/songbaisen";
my @DownloadFile;
push @DownloadFile,"hell.pl";
push @DownloadFile,"CELL0.csv";
my $Ftp = MYFTP->new();
#&DownLoadFtpFile($server,$port,$user,$pw,$LocalSavePath,$RemotePath,@DownloadFile);
$Ftp->UpLoadFtpFile($server,$port,$user,$pw,$LocalSavePath,$RemotePath,@DownloadFile);