FTP目录上传,perl

时间:2011-11-27 17:44:44

标签: perl file file-upload ftp

如何将整个文件夹上传到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 ;
                 }
          }
   }

2 个答案:

答案 0 :(得分:1)

  • 如果您使用的是标准Net::FTP模块,则必须一次上传一个文件。那里 然而,其他模块允许您上传/镜像整个目录树。

  • 您可能希望在上传文件之前转到您创建的目录。 $FTP->cwd($pfolder);应该可以解决问题。

  • “权限被拒绝”问题可能是因为MyProject是一个目录(我猜)。在本地,对该目录执行chdir(),使用opendir()打开它,然后使用readdir()遍历文件并一次上传一个文件。

答案 1 :(得分:1)

如果您尝试上传多个文件/目录,可能需要查看

rput ( [FlattenTree => 1] [,RemoveLocalFiles => 1] )

来自Net::FTP::Recursive