1
我试图用PHP解压文件时不断收到failed to open stream: Is a directory
错误。ZipArchive:`无法打开流:是一个目录`
这通常是目标路径的问题。
但是,在我的情况下,目标是好的:我可以使用相同的代码解压缩不同的文件,或者解压缩没有PHP的文件。
ZipArchive::extractTo文档没有帮助。此错误消息也没有其他SO线程。
仅供参考,这是一个Q &一个后。
以下是评论中所要求的源代码。我分享Dropbox的链接公开,看到这件事情取决于ZIP输入的格式(ZIP文件/
路径,看到答案。)
/** Config **/
$url = 'https://www.dropbox.com/sh/nx5792q9syppaoo/AAAJZBWlGNAd_EkmQaFvEwe0a?dl=1';
/** Where to save **/
$zipped = ABSPATH . 'tmp/updates/dialogues.zip'; /* Keep in mind this is public-facing. */
$outputdirectory = ABSPATH . 'tmp/updates/testing'; /* The trailing slash is optinal. */
/** Download the dialogues **/
echo 'Fetching the dialogues...<br>';
if (($dropboxfile = fopen($url, 'r')) === FALSE) { /* == has higher precedent over = */
echo 'FATAL ERROR: could not open Dropbox file.';
die();
} else if (file_put_contents($zipped, $dropboxfile) === FALSE) {
echo 'FATAL ERROR: could not copy Dropbox file.';
die();
}
echo "Dialogues downloaded as zip OK. (See {$zipped})<br>";
/** Unzip the dialogues **/
print 'Unzipping...<br>';
$zip = new ZipArchive;
$res = $zip->open($zipped);
if ($res === TRUE) {
// Does not work
// $zip->extractTo(ABSPATH . 'tmp/updates/testing');
// Works
for($i = 0 ; $i < $zip->numFiles ; $i++) {
if ($zip->getNameIndex($i) != '/' && $zip->getNameIndex($i) != '__MACOSX/_') {
print $zip->getNameIndex($i) . '<br>';
$zip->extractTo($outputdirectory, array($zip->getNameIndex($i)));
}
}
$zip->close();
print 'Done unzipping.<br>';
} else {
print 'FATAL ERROR: unzipping failed.';
}
你能告诉我们你的代码吗? –
为什么-1当我试图帮忙? –
我花了15分钟的时间把这个问答放在一起,希望能够在未来挽回某人的某个时间,而我已经有了答案。这并不完全让我想在未来再次分享问答。 –