从目录中的ZIP读取单个文件

时间:2016-10-02 13:21:05

标签: php zip wrapper

我有一个ZIP文件(带有VPK扩展名),我希望提取一个位于zip文件目录中的文件。上传的文件正确上传。这是我目前的代码。但不幸的是它引发了一个错误。

$hbid =  substr(md5(time()),0,16);
mkdir("pkg/".$hbid, 0700);
mkdir("pkg_image/".$hbid, 0700);
$target_dir = "pkg/" . $hbid . "/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
...
FILE UPLOADING CODE HERE
...

ERROR -> $handle = fopen('zip://./'.$target_file.'#/sce_sys/icon0.png', 'r'); 

$result = '';
if($handle){
while (!feof($handle)) {
  $result .= fread($handle, 8192);
}
fclose($handle);
$file = fopen("pkg_image/".$hbid."/icon0.png");
fwrite($file,$result);
fclose($file);

错误代码是:

fopen(zip://./pkg/0152cc9c0c52da70/4rows_1_1.vpk#/sce_sys/icon0.png): failed to open stream: operation failed

我以前从未以这种方式提取文件,但查看与此相关的其他答案,它们都从zip的根目录中提取文件,但我需要的文件位于zip文件的子目录中。我不完全确定我做错了什么。

感谢。

1 个答案:

答案 0 :(得分:0)

想出来。更正是用#sce_sys替换/ sce_sys。目录不需要初始/。