Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FTP目录上传,perl_Perl_File_File Upload_Ftp - Fatal编程技术网

FTP目录上传,perl

FTP目录上传,perl,perl,file,file-upload,ftp,Perl,File,File Upload,Ftp,如何将整个文件夹上载到ftp服务器? 我正在努力做到以下几点: $FTP->binary(); $FTP->mkdir($pfolder); $FTP->put("$pPath$pfolder"); 当然,我在认证之前就这么做了。。只是当我运行代码时,会出现以下消息 无法打开本地文件C:\xampp\htdocs\MyProject:权限被拒绝 在projectUpload.pl第41行 --编辑-- 我找到了解决方案,下面是代码: sub upload {

如何将整个文件夹上载到ftp服务器? 我正在努力做到以下几点:

$FTP->binary();
$FTP->mkdir($pfolder);
$FTP->put("$pPath$pfolder");
当然,我在认证之前就这么做了。。只是当我运行代码时,会出现以下消息

无法打开本地文件C:\xampp\htdocs\MyProject:权限被拒绝
在projectUpload.pl第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 ;
                 }
          }
   }
  • 如果您使用的是标准的
    Net::FTP
    模块,则必须一次上载一个文件。那里 但是,还有其他模块允许您上载/镜像整个目录树

  • 您可能希望在上载文件之前转到您创建的目录。A
    $FTP->cwd($pfolder)应该可以做到这一点

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


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

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

Net::FTP::Recursive

对,但是如果MyProject中有更多的目录呢?