2014-03-12 13 views
6

Ich habe ein Formular (HTML), das eine Datei an ein PHP-Skript übermittelt, das die Datei in ZIP umbenennt, in einem Ordner speichert (zufälliger Name) und dann diese Datei extrahiert.Zip-Datei hochladen und Zip extrahieren

Die Datei wird hochgeladen. Der Ordner wurde korrekt erstellt. Die Datei wird korrekt umbenannt.

Die Extraktion des Zip schlägt fehl.

Hier ist meine Form:

<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> 

ist die PHP-Skript - up.php

$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'; 
    } 

Ist es der Modus des Ordners, die Extraktion verhindert? Soweit ich sehen kann, gibt es keinen Syntaxfehler.

Antwort

3

versuchen

$res = $zip->open($path) 

Wie Sie die Datei auf $path verschoben haben Sie dann bei $path auf die Datei in Betrieb nehmen müssen

+0

Sie richtig sind. Ich habe den richtigen Weg nicht angegeben. Vielen Dank. Das funktioniert. –

2
<?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> 
Verwandte Themen