首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传Zip文件并解压Zip

上传Zip文件并解压Zip
EN

Stack Overflow用户
提问于 2014-03-12 23:07:14
回答 2查看 38.1K关注 0票数 8

我有一个表单(HTML),它向PHP脚本提交文件,PHP脚本将文件重命名为ZIP,将其存储在文件夹(随机名称)中,然后提取该文件。

文件将上载。文件夹已正确创建。文件被正确地重命名。

压缩包解压失败。

这是我的表格:

代码语言:javascript
复制
<form action="up.php" method="post" enctype="multipart/form-data" name="form1" id="form1">

Select file 
<input name="ufile" type="file" id="ufile" size="50" />

<input type="submit" name="Submit" value="Upload" />

 </form>

下面是PHP脚本- up.php

代码语言:javascript
复制
$file_name = $HTTP_POST_FILES['ufile']['name'];
$random_digit=rand(0000,9999);
$new_file_name=$random_digit.".zip";
mkdir($random_digit, 0777, true);

$path= $random_digit.'/'.$new_file_name;
if($ufile !=none)
 {
    if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
 {
 echo "The upload is successful<BR/>"; 
 echo "File Renamed to: ".$new_file_name." for processing.<BR/>"; 
 echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>"; 
 echo "<strong><a style='color:#6A8DBC; text-decoration:none' href='".$link_address."'>Proceed to the next phase of the importation of data to the system</a></strong></br>";
  }
 else
  {
   echo "Error";
   }
 }

  $zip = new ZipArchive;
  $res = $zip->open($new_file_name);
  if ($res === TRUE) {
     $zip->extractTo($random_digit.'/');
     $zip->close();
     echo 'extraction successful';
     } else {
     echo 'extraction error';
     }

是文件夹的模式阻止了解压缩吗?据我所知,没有语法错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-12 23:10:10

试一试

代码语言:javascript
复制
$res = $zip->open($path)

由于您已将文件移动到$path,因此需要在$path中对该文件进行操作

票数 3
EN

Stack Overflow用户

发布于 2015-08-06 23:01:07

代码语言:javascript
复制
<?php 

function rmdir_recursive($dir) {
    foreach(scandir($dir) as $file) {
       if ('.' === $file || '..' === $file) continue;
       if (is_dir("$dir/$file")) rmdir_recursive("$dir/$file");
       else unlink("$dir/$file");
   }

   rmdir($dir);
}

if($_FILES["zip_file"]["name"]) {
    $filename = $_FILES["zip_file"]["name"];
    $source = $_FILES["zip_file"]["tmp_name"];
    $type = $_FILES["zip_file"]["type"];

    $name = explode(".", $filename);
    $accepted_types = array('application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/x-compressed');
    foreach($accepted_types as $mime_type) {
        if($mime_type == $type) {
            $okay = true;
            break;
        } 
    }

    $continue = strtolower($name[1]) == 'zip' ? true : false;
    if(!$continue) {
        $message = "The file you are trying to upload is not a .zip file. Please try again.";
    }

  /* PHP current path */
  $path = dirname(__FILE__).'/';  // absolute path to the directory where zipper.php is in
  $filenoext = basename ($filename, '.zip');  // absolute path to the directory where zipper.php is in (lowercase)
  $filenoext = basename ($filenoext, '.ZIP');  // absolute path to the directory where zipper.php is in (when uppercase)

  $targetdir = $path . $filenoext; // target directory
  $targetzip = $path . $filename; // target zip file

  /* create directory if not exists', otherwise overwrite */
  /* target directory is same as filename without extension */

  if (is_dir($targetdir))  rmdir_recursive ( $targetdir);


  mkdir($targetdir, 0777);


  /* here it is really happening */

    if(move_uploaded_file($source, $targetzip)) {
        $zip = new ZipArchive();
        $x = $zip->open($targetzip);  // open the zip file to extract
        if ($x === true) {
            $zip->extractTo($targetdir); // place in the directory with same name  
            $zip->close();

            unlink($targetzip);
        }
        $message = "Your .zip file was uploaded and unpacked.";
    } else {    
        $message = "There was a problem with the upload. Please try again.";
    }
}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Unzip a zip file to the webserver</title>
</head>

<body>
<?php if($message) echo "<p>$message</p>"; ?>
<form enctype="multipart/form-data" method="post" action="">
<label>Choose a zip file to upload: <input type="file" name="zip_file" /></label>
<br />
<input type="submit" name="submit" value="Upload" />
</form>
</body>
</html>
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22355653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档