首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法提取使用php生成的zip文件

无法提取使用php生成的zip文件
EN

Stack Overflow用户
提问于 2017-11-16 19:09:37
回答 2查看 1.4K关注 0票数 1

我已经编写了PHP脚本来生成zip文件。当我使用rar软件解压它时,它工作得很好,但不能用rar软件解压。我不能要求用户安装rar软件来解压下载的zip文件。

我不知道我在哪里犯了错。在这里我附上了错误的屏幕截图,当我尝试打开压缩文件时得到的。

代码语言:javascript
复制
// Here is code snippet
$obj->create_zip($files_to_zip, $dir . '/download.zip');

// Code for create_zip function
//create the archive
$zip = new ZipArchive();
if ($zip->open($destination, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    return false;
}
//add the files
foreach ($valid_files as $file) {    
    $filearr = explode('/', $file);
    $zip->addFile($file, end($filearr));
}
$zip->close();
EN

回答 2

Stack Overflow用户

发布于 2017-11-16 19:18:39

如果$valid_files是一个全局数组,使用basename()而不是end(),您的压缩包实际上可能没有添加任何文件,导致它是一个无效的压缩包(但是,这在压缩文件的大小中是可见的)。

同样尝试winrar/winzip/7zip,看看他们返回了什么,微软内部的zip引擎可能不是最新的,无法打开zip。

票数 1
EN

Stack Overflow用户

发布于 2018-10-15 11:30:29

我也遇到过这个问题,使用 7z 解决了这个问题,但我们需要将压缩文件发送给其他人,所以7z是nono。

我发现,在我的例子中,文件路径太长:

当我使用这个的时候使用

代码语言:javascript
复制
$zip->addFile($files_path.'/people.txt');

它生成了一个嵌套非常深的压缩文件夹,例如"/tmp/something/something1/something2/people.txt“

所以我需要用这个来代替

代码语言:javascript
复制
$zip->addFile($files_path.'/people.txt', 'people.txt');

其中生成了一个只有1层"people.txt“的压缩文件夹,并且Windows zip读起来很完美~

希望这对同样有这个问题的人有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47328132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档