上传ZIP文件并在服务器上解压的脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传ZIP文件并在服务器上解压的脚本相关的知识,希望对你有一定的参考价值。

Easy php script for uploading and unpacking zip files to the server much faster

Steps to follow:

1. create folder on the webserver called "zipper" or something else
2. copy the following PHP code into a file called "zipper.php" into this folder
3. use the url to this file to start the little script
4. select a zip file from your harddisk and go for it
5. after upload a directory exists in the folder "zipper" from step 1

with ftp program (like Filezilla) you can easily move the content to the directory of your choice (that's all), which goes much faster
  1. <?php
  2. /* Simple script to upload a zip file to the webserver and have it unzipped
  3.   Saves tons of time, think only of uploading Wordpress to the server
  4.   Thanks to c.bavota (www.bavotasan.com)
  5.   I have modified the script a little to make it more convenient
  6.   Modified by: Johan van de Merwe (12.02.2013)
  7. */
  8.  
  9. function rmdir_recursive($dir) {
  10. foreach(scandir($dir) as $file) {
  11. if ('.' === $file || '..' === $file) continue;
  12. if (is_dir("$dir/$file")) rmdir_recursive("$dir/$file");
  13. else unlink("$dir/$file");
  14. }
  15.  
  16. rmdir($dir);
  17. }
  18.  
  19. if($_FILES["zip_file"]["name"]) {
  20. $filename = $_FILES["zip_file"]["name"];
  21. $source = $_FILES["zip_file"]["tmp_name"];
  22. $type = $_FILES["zip_file"]["type"];
  23.  
  24. $name = explode(".", $filename);
  25. $accepted_types = array('application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/x-compressed');
  26. foreach($accepted_types as $mime_type) {
  27. if($mime_type == $type) {
  28. $okay = true;
  29. break;
  30. }
  31. }
  32.  
  33. $continue = strtolower($name[1]) == 'zip' ? true : false;
  34. if(!$continue) {
  35. $message = "The file you are trying to upload is not a .zip file. Please try again.";
  36. }
  37.  
  38. /* PHP current path */
  39. $path = dirname(__FILE__).'/'; // absolute path to the directory where zipper.php is in
  40. $filenoext = basename ($filename, '.zip'); // absolute path to the directory where zipper.php is in (lowercase)
  41. $filenoext = basename ($filenoext, '.ZIP'); // absolute path to the directory where zipper.php is in (when uppercase)
  42.  
  43. $targetdir = $path . $filenoext; // target directory
  44. $targetzip = $path . $filename; // target zip file
  45.  
  46. /* create directory if not exists', otherwise overwrite */
  47. /* target directory is same as filename without extension */
  48.  
  49. if (is_dir($targetdir)) rmdir_recursive ( $targetdir);
  50.  
  51.  
  52. mkdir($targetdir, 0777);
  53.  
  54.  
  55. /* here it is really happening */
  56.  
  57. if(move_uploaded_file($source, $targetzip)) {
  58. $zip = new ZipArchive();
  59. $x = $zip->open($targetzip); // open the zip file to extract
  60. if ($x === true) {
  61. $zip->extractTo($targetdir); // place in the directory with same name
  62. $zip->close();
  63.  
  64. unlink($targetzip);
  65. }
  66. $message = "Your .zip file was uploaded and unpacked.";
  67. } else {
  68. $message = "There was a problem with the upload. Please try again.";
  69. }
  70. }
  71.  
  72.  
  73. ?>
  74. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  75. <html xmlns="http://www.w3.org/1999/xhtml">
  76. <head>
  77. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  78. <title>Unzip a zip file to the webserver</title>
  79. </head>
  80.  
  81. <body>
  82. <?php if($message) echo "<p>$message</p>"; ?>
  83. <form enctype="multipart/form-data" method="post" action="">
  84. <label>Choose a zip file to upload: <input type="file" name="zip_file" /></label>
  85. <br />
  86. <input type="submit" name="submit" value="Upload" />
  87. </form>
  88. </body>
  89. </html>

以上是关于上传ZIP文件并在服务器上解压的脚本的主要内容,如果未能解决你的问题,请参考以下文章

java如何解压页面上传到服务器的zip文件

2022年底C# 解压zip文件遇到的一个Bug

springboot zip文件上传无法解压

ubuntu解压时中文出现乱码

怎样将压缩文件上传到服务器上

Java 解压zip压缩包