无法解压缩通过Perl中的FTP get()下载的文件

时间:2015-06-02 06:48:59

标签: perl ftp

我正在使用FTP get()从服务器下载perl中的zip文件,但是当我尝试解压缩时,我无法通过perl和手动(我正在使用& zip)来执行此操作。 但是当我手动下载相同的文件时,我可以使用7 zip手动解压缩。

$fpath = "filename";
my $dest = "dest";
$ftp = Net::FTP->new($host, Debug => 0)||warn("connection not made");
$ftp->login($user, $pass) || die $ftp->message;
$ftp->cwd($dir);
my $zipName = $ftp->get($fpath);

my $zip = Archive::Zip->new($zipName);
my $extractor = Archive::Extract->new( archive => $zipName );
my $ext = $extractor->extract(to=>"location");

文件大小与服务器相同

无法解决问题。

2 个答案:

答案 0 :(得分:2)

  

但是当我手动下载相同的文件时,我可以使用7个zip手动解压缩。

7zip可以解压缩各种格式,而Archive :: Zip只能做一个子集,即主要是原始的ZIP格式。我建议您的文件只是7zip支持的格式,但Archive :: Zip不支持。如果相反的文件是由Archive :: Zip本身创建的,那么问题可能就不同了,因为Archive :: Zip应该能够解压自己创建的文件。

答案 1 :(得分:2)

如果下载的存档损坏,您可以强制执行任何ftp转换的二进制传输,

$ftp->binary;