从目录中的 ZIP 中读取单个文件
Read single file from ZIP within a directory
我有一个 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 文件的子目录中。我不完全确定我做错了什么。
谢谢。
想通了。更正的方法是将/sce_sys替换为#sce_sys。目录不需要初始 / 。
我有一个 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 文件的子目录中。我不完全确定我做错了什么。
谢谢。
想通了。更正的方法是将/sce_sys替换为#sce_sys。目录不需要初始 / 。