将提取的文件从ZIP复制到目录

时间:2010-10-02 02:27:18

标签: php copy

注意:我在本地主机上,所以CHMOD'ing不是答案。


无论如何,我无法将从ZIP中提取的文件复制到目录中,文件被提取出来,但是它们不会被复制......文件只是放在{{{ 1}}是。我有这个:

upload.php

它输出11/11,所以这很好......但文件没有复制,原始文件也没有被删除。为什么不复制它们?

3 个答案:

答案 0 :(得分:2)

问题在于您假设数组$ary中包含文件名。但事实并非如此。

保存$ary命令输出的

unzip将类似于:

extracting: foo
extracting: bar
...

尝试使用var_dump($ary)转储数组内容以确认这一点。

我的建议是不要使用外部unzip命令,而是使用build in zip functions of PHP作为:

$zip = new ZipArchive;
if ($zip->open("$_FILES['file']['tmp_name']") === TRUE) {
    $zip->extractTo('i/');
    $zip->close();
} else {
    // failed to extract.
}

答案 1 :(得分:0)

正如已经提到的codaddict,请尝试使用PECL zip模块或PEAR File_Archive。 但如果您无法安装任何这些,并坚持使用旧的PHP,请尝试:

exec('unzip ' . $_FILES['file']['tmp_name'] . ' | tail -n"+2" | cut -d" " -f4 ', $ary, $output);

那应该只给你文件名。

答案 2 :(得分:0)

由于您没有完全阅读本手册,因此不会复制文件:

$ dest - 目标路径。如果$ dest是一个URL,如果包装器不支持覆盖现有文件,则复制操作可能会失败。 警告:如果目标文件已存在,则会被覆盖。

您需要指定完整的目标路径(包括文件名),而不仅仅是目录。