我正在尝试从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文件夹中,我的代码可以读取这个文件的内容,但是它不能逐个提取文件(我只想解压缩特定的文件)。我也想避免创建子文件夹)
$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-path位于同一个位置(相同的upload Zip中的这三个脚本都包含一个额外的文件夹myzip-file,它通过提取完整的压缩内容来确认,而这个sinppet $zip->getNameIndex($i);也揭示了.)。
请注意,您不必修复它,但是如果有从zip中提取单个文件的示例,请注意。它会对我有用的。
发布于 2022-11-22 04:37:16
我已经测试了您的PHP脚本,如果
使用相对路径的"./my-path/")
$zipPath="./upload/myzip-file.zip";和
upload文件夹中,process.php是进行工作的PHP )因此,使用以下代码(我在linux服务器上进行了测试,它可以工作)
<?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();
}
?>

https://stackoverflow.com/questions/74515638
复制相似问题