无法在 Perl 中解压缩通过 FTP get() 下载的文件
Not able to unzip a file downloaded through FTP get() in Perl
我正在使用 FTP get() 在 perl 中从服务器下载一个 zip 文件,但是当我试图解压缩它时,我无法通过 perl 和手动(我正在使用 & 压缩)。
但是当我手动下载相同的文件时,我可以使用 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");
文件大小与服务器相同
想不通问题
But when I am downloading the same file manually then I am able to unzip it manually using 7 zip.
7zip可以解压多种格式,而Archive::Zip只能解压一个子集,即主要是原始ZIP格式。我建议您的文件只是 7zip 支持但 Archive::Zip 不支持的格式。相反,如果有问题的文件是由 Archive::Zip 自己创建的,那么问题可能不同,因为 Archive::Zip 应该能够解压缩它自己创建的文件。
如果下载的存档已损坏,您可以强制执行不进行任何 ftp 翻译的二进制传输,
$ftp->binary;
我正在使用 FTP get() 在 perl 中从服务器下载一个 zip 文件,但是当我试图解压缩它时,我无法通过 perl 和手动(我正在使用 & 压缩)。 但是当我手动下载相同的文件时,我可以使用 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");
文件大小与服务器相同
想不通问题
But when I am downloading the same file manually then I am able to unzip it manually using 7 zip.
7zip可以解压多种格式,而Archive::Zip只能解压一个子集,即主要是原始ZIP格式。我建议您的文件只是 7zip 支持但 Archive::Zip 不支持的格式。相反,如果有问题的文件是由 Archive::Zip 自己创建的,那么问题可能不同,因为 Archive::Zip 应该能够解压缩它自己创建的文件。
如果下载的存档已损坏,您可以强制执行不进行任何 ftp 翻译的二进制传输,
$ftp->binary;