Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何提取用户上传的zip文件?_Php_File Upload_Zip_Chmod_Mkdir - Fatal编程技术网

Php 如何提取用户上传的zip文件?

Php 如何提取用户上传的zip文件?,php,file-upload,zip,chmod,mkdir,Php,File Upload,Zip,Chmod,Mkdir,因此,我想创建一个系统,用户可以在其中以zip文件上传3d模型的文件,并可以显示、存储模型等 所以,我得到了这个文件,我把它永久地放在一个文件夹中,然后把它解压缩到另一个临时文件夹中,看看它是否是一个3d模型 我试着这样做: $target_dir = "upload/"; $targetfilename = rand().$_FILES['file']['name']; move_upl

因此,我想创建一个系统,用户可以在其中以zip文件上传3d模型的文件,并可以显示、存储模型等

所以,我得到了这个文件,我把它永久地放在一个文件夹中,然后把它解压缩到另一个临时文件夹中,看看它是否是一个3d模型

我试着这样做:

                  $target_dir = "upload/";
                  $targetfilename = rand().$_FILES['file']['name'];
                  move_uploaded_file($_FILES['file']['tmp_name'], $target_dir.$targetfilename);

                  //unzip the file into temp folder
                  $tmp_dir = $target_dir.rand();
                  mkdir($tmp_dir);  
                  chmod($tmp_dir, 0777);
                  //chmod($targetfilename, 0777); //this not working, maybe isn't the right way

                  $zip = new ZipArchive;
                  $res = $zip->open($targetfilename);
                  if ($res === TRUE) {
                    // extract it to the path we determined above
                    $zip->extractTo($tmp_dir);
                    $zip->close();
                    echo 'SUCCESS';
                  } else {
                    echo 'ERROR';
                  }

我没有收到任何错误,但无法解压缩。有什么想法吗?如何解决此问题?

是否在
$targetfilename
文件夹中

若有,改变
$res=$zip->open($targetfilename)


$res=$zip->open($target\u dir.$targetfilename)
可能会解决您的问题。

$target\u dir.rand()
<。你试图在它存在之前上传它。您需要为它创建另一个变量,将其用于已创建的文件夹。启用错误报告。我已使用
ini\u集('display\u errors',1)启用了所有错误;ini设置(“显示启动错误”,1);错误报告(E_全部)
但是我没有得到任何错误,只有当我想设置$targetfilename的权限,并且我试图重写你所说的@FunkFortyNiner部分,但没有做任何更改时