首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:无法从ZIP存档中扩展特定文件

PHP:无法从ZIP存档中扩展特定文件
EN

Stack Overflow用户
提问于 2022-11-21 07:43:21
回答 1查看 33关注 0票数 2

我正在尝试从zip文件中提取文件,但由于以下错误而失败了

Warning: copy(zip://upload/myzip-file.zip#myzip-file/file_001.csv): Failed to open stream: operation failed in {code line}

我的文件myzip-file.zip放在upload文件夹中,我的代码可以读取这个文件的内容,但是它不能逐个提取文件(我只想解压缩特定的文件)。我也想避免创建子文件夹)

代码语言:javascript
复制
$zip = new ZipArchive;
    if ($zip->open($zipPath) === true) {
        for($i = 0; $i < $zip->numFiles; $i++) {
            $filename = $zip->getNameIndex($i);
            $fileinfo = pathinfo($filename);
            copy("zip://".$zipPath."#".$filename, "my-path/".$fileinfo['basename']);
        }                  
        $zip->close();                  
    }

,我怀疑copy无法理解zip://我在网上发现了这个示例,在这里人们已经使用copy命令实现了相同的功能,但是它不再适用于我。

请注意

我的php脚本与directory)

  • My和my-path位于同一个位置(相同的upload Zip中的这三个脚本都包含一个额外的文件夹myzip-file,它通过提取完整的压缩内容来确认,而这个sinppet $zip->getNameIndex($i);也揭示了.

)。

请注意,您不必修复它,但是如果有从zip中提取单个文件的示例,请注意。它会对我有用的。

EN

回答 1

Stack Overflow用户

发布于 2022-11-22 04:37:16

我已经测试了您的PHP脚本,如果

使用相对路径的"./my-path/")

  • my-path

  • (所以使用$zipPath="./upload/myzip-file.zip";

  • 的迭代),如果$filename实际上是一个目录

  • ,最好不要处理“文件”,这样目录结构就像附加的图片(myzip-file.zip放在upload文件夹中,process.php是进行工作的PHP )

因此,使用以下代码(我在linux服务器上进行了测试,它可以工作)

代码语言:javascript
复制
<?php

$zipPath="./upload/myzip-file.zip";

$zip = new ZipArchive;
    if ($zip->open($zipPath) === true) {
        for($i = 0; $i < $zip->numFiles; $i++) {
            $filename = $zip->getNameIndex($i);
            $fileinfo = pathinfo($filename);
      
          if (substr($filename, -1) !="/"){
            copy("zip://".$zipPath."#".$filename, "./my-path/".$fileinfo['basename']);
          }
        }                  
        $zip->close();                  
    }

?>

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

https://stackoverflow.com/questions/74515638

复制
相关文章

相似问题

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