【发布时间】:2020-10-05 13:07:51
【问题描述】:
我有一个网页,最终用户可以选择和下载文件作为 zip 存档(这是 NFS 服务器文件)。我正在使用 Perl 作为后端。
使用 Perl zip Archive 库的 addFile,将 zip 文件写入套接字
$zip->addFile(DSNFS::check_obj_path("$Main::nfsMntDir/$origfile", $Main::nfs_server), $zipfilename);
my $fh = *STDOUT;
if ($zip->writeToFileHandle($fh,0) != Archive::Zip::AZ_OK) {
Log::Msg("NFS", 20, "Unable to write to file Handle");
}
下载 zip 文件后,最终用户无法提取 zip 文件。如果我们检查压缩比,它显示为零。
谁能帮我解决这个问题,并说明发生这种情况的一些原因?
【问题讨论】:
-
压缩比为 0 并不罕见。某些文件不能很好地压缩。例如,如果您尝试将 zip 文件放入 zip 文件中,您很可能不会得到任何进一步的压缩。
-
请提供一个最小的、可运行的问题演示。 (见minimal reproducible example。)
-
您正在将“二进制”数据写入 STDOUT,但您没有使用
binmode(STDOUT);。这在 unixy 系统上可能不会有什么不同,但在 Windows 上肯定会。
标签: perl zip compression nfs