PHP解压缩文件并逐个提取文件

时间:2015-11-23 02:02:21

标签: php zip

我想创建一个PHP代码来解压缩文件,然后将其解压缩到一个文件夹。我知道要提取zip中的所有文件,但是,我想逐个提取它,因为我想检查每个文件需要低于1MB

这是我的代码:

if(move_uploaded_file($current['name'], $lokasi))

我总是在这些行代码上失败:$current['name']它总是返回Failed,我知道<meta property="og:image" content="http://foo.com/bar/2.jpg"> <meta property="og:image:type" content="image/jpg"> <meta property="og:image:width" content="200"> <meta property="og:image:height" content="150"> 只是文件名,而不是zip中的文件。任何人都知道如何在zip中获取文件(逐个)?

2 个答案:

答案 0 :(得分:1)

最后,从我读到的link,我选择使用数组方法提取文件。这是我的问题的最终代码:

for ($i=0; $i<$zip->numFiles;$i++) 
        {
            $current = $zip->statIndex($i);
            if($current["size"] > (1*1024*1024))
            {
                printf("%s (size: %d bytes) is too big, failed to upload this image!<br>", $current["name"], $current["size"]);
            }
            else
            {
                $location = $folder.'/'.$folder2.'/';
                if($zip->extractTo($location , array($current['name'])))
                    printf("%s successfully uploaded<br>", $current["name"]);
                else
                    printf("Failed <br />");
            }
        }

答案 1 :(得分:0)

http://docs.php.net/move_uploaded_file说:

此函数检查以确保filename指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上传机制上传的)
zip存档文件可能是上传。但是你的脚本从中提取的文件不是。
获取stat条目实际上并没有将数据提取到本地文件系统。为此,您可能会对ZipArchive::extractTo和/或ZipArchive::getStream

感兴趣