У меня есть 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. Начальный / не требуется для каталога.
Других решений пока нет …