You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Perl的Archive::Zip模块addString方法添加大文件后生成的Zip文件无法打开的问题求助

使用Perl的Archive::Zip模块addString方法添加大文件后生成的Zip文件无法打开的问题求助

大家好,我最近碰到了一个Perl处理Zip打包的棘手问题,想请各位大佬帮忙看看。

我做了一个Perl系统,负责解析邮件,把邮件内容转成JSON文件、分离出附件,最后用Archive::Zip把这些文件打包成Zip包。小文件处理起来完全没问题,但一旦附件大小超过大概10MB,生成的Zip包就失效了——在Windows里显示的大小明显不对,而且根本打不开、没法解压。

我的核心代码是这样的:

my $zip = Archive::Zip->new();

$count = 0;

foreach $attachment (@atachments) {

my $member = $zip->addString(@attachments[$count], @attachment_names[$count])

$member->desiredCompressionMethod( COMPRESSION_STORED );

$count++;

}

my $jsonMember = $zip->addString($json, $fn . '.json')

$jsonMember->desiredCompressionMethod( COMPRESSION_STORED );

unless ( $zip->writeToFileNamed($out) == AZ_OK ) {

die 'zip error';

}

注:代码里的@atachments看起来是拼写笔误,实际应该是@attachments

我已经尝试过这些办法,但都没解决问题:

  • 把Archive::Zip升级到了1.68版本,情况依旧
  • 试过调整不同的压缩级别,没用
  • 确认过要添加的字符串本身是完整的,所有内容都在

现在我有几个疑问想请教:

  • 会不会是addString方法本身存在字符串大小限制?
  • 有没有可能文件大小触发了不同的Zip类型?我查过Zip64的相关内容,但它是针对4GB以上文件的,我这才10MB,应该不沾边吧?

希望有大佬能给我点思路,万分感谢!

备注:内容来源于stack exchange,提问作者BM100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:23:12