如何将整个文件夹上传到ftp服务器? 我正在尝试执行以下操作:
$FTP->binary();
$FTP->mkdir($pfolder);
$FTP->put("$pPath$pfolder");
当然我在认证之前做过..只是当我运行代码时,会出现以下消息
Cannot open Local file C:\xampp\htdocs\MyProject: Permission denied
at projectUpload.pl line 41
- 编辑 -
我找到了解决方案,这里是代码:
sub upload {
my ( $bpath , $path , $FTP ) = @_;
$path .= '/' unless $path =~ /\/$/;
for my $i ( glob ( "$path*" ) ) {
$i =~ /(?:\/(.*))/;
if ( not -d $i ) {
if ( -f $i ) {
$FTP->put ( $i , $1 ) ;
}
} else {
$FTP->mkdir ( $1 ) ;
upload ( $bpath , $i , $FTP ) if -d $i ;
}
}
}
答案 0 :(得分:1)
如果您使用的是标准Net::FTP
模块,则必须一次上传一个文件。那里
然而,其他模块允许您上传/镜像整个目录树。
您可能希望在上传文件之前转到您创建的目录。 $FTP->cwd($pfolder);
应该可以解决问题。
“权限被拒绝”问题可能是因为MyProject
是一个目录(我猜)。在本地,对该目录执行chdir()
,使用opendir()
打开它,然后使用readdir()
遍历文件并一次上传一个文件。
答案 1 :(得分:1)
如果您尝试上传多个文件/目录,可能需要查看
rput ( [FlattenTree => 1] [,RemoveLocalFiles => 1] )
来自Net::FTP::Recursive