Saturday, July 14, 2012

Create zip file php


Create zip file php

This is an application type of program you need to create number of files.First you need to upload the files in to a directory which are to be zipped.My example Files have been uploaded to directory created as "files" .I think you may have created multiple files upload php in my previous tutorials. Same scripts have been used in this tutorial also for file uploading.
Following are the multiple files uploading scripts

Multiple File Upload

Add another

<html>
<head>
 <title>multiple file upload </title>
<script type="text/javascript">
function add_file_field(){
var container=document.getElementById('file_container');
var file_field=document.createElement('input');
file_field.name='images[]';
file_field.type='file';
container.appendChild(file_field);
 var br_field=document.createElement('br');
container.appendChild(br_field);
}
</script>
</head>
<body>
 <form action="mupload.php" method="post" enctype="multipart/form-data" name="mutiple_file_upload_form" id="mutiple_file_upload_form">
 <h3>Multiple File Upload </h3>
<div id="file_container"> <input name="images[]" type="file" /> <br /> </div>
<a href="javascript:void(0);" onClick="add_file_field();">Add another</a><br />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
 </html>
mupload.php 

<?php
 if (isset($_POST['Submit'])) {
 $number_of_file_fields = 0;
 $number_of_uploaded_files = 0;
$number_of_moved_files = 0;
$uploaded_files = array();
$upload_directory = dirname(__file__) . '/files/';
 for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
 $number_of_file_fields++;
 if ($_FILES['images']['name'][$i] != '') {
 $number_of_uploaded_files++;
 $uploaded_files[] = $_FILES['images']['name'][$i];
 if (move_uploaded_file($_FILES['images']['tmp_name'][$i], $upload_directory . $_FILES['images']['name'][$i])) {
$number_of_moved_files++;
 }
 }
 }
header("location: czip.php");
}
 ?>

Changes,I have made from previous tutorial on file upload, I have marked in bold blue color.Next you have to create  czip.php file as bellow.







Create a ZIP


File Name
.
..
flowers.jpg
onlinewebapplication.docx
onlinewebapplication.pdf
<?php
    $error = "";      
    if(isset($_POST['createzip'])){
        $post = $_POST;      
        $file_folder = "files/";  
        if(extension_loaded('zip')){  
            if(isset($post['files']) and count($post['files']) > 0){  
                $zip = new ZipArchive();          
                $zip_name = time().".zip";          
                if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){      
                    $error .=  "* Sorry ZIP creation failed at this time<br/>";
                }
                foreach($post['files'] as $file){              
                    $zip->addFile($file_folder.$file);          
                }
                $zip->close();
                if(file_exists($zip_name)){
                  
                    header('Content-type: application/zip');
                    header('Content-Disposition: attachment; filename="'.$zip_name.'"');
                    readfile($zip_name);
                  
                    unlink($zip_name);
                }
              
            }else
                $error .= "* Please select file to zip <br/>";
        }else
            $error .= " ZIP extension Missing<br/>";
    }
?>

<html>
<head>

<title>create Zip</title>
</head>
<body>
<center><h3>Create a ZIP</h3>
</center>
<form name="zips" method="post">

<table bgcolor=bgcolor=#b19879 align="center">
  <tr bgcolor=#e5d8b2>
    <td width="33" align="center"><img src="rt.jpg"></td>
    <td width="117" align="center">File Name</td>
  
  </tr>
<?php

 $folder = "files/";
$handle = opendir($folder);
while ($file = readdir($handle))
{
 $files[ ] = $file;
}
closedir($handle);
foreach ($files as $file)
 {
  echo "<tr bgcolor=#ffffff>
    <td align='center'><input type='checkbox' name='files[]' value='$file' /></td>";
 echo "<td>".$file."</a></td></tr>";
}
?>
  

 
    <tr bgcolor=#e5d8b2><td colspan="2" align="center">
        <input type="submit" name="createzip"value="Download as ZIP" /></td></tr>
      <tr bgcolor=#e5d8b2> <td colspan="2" align="center"><input type="reset" name="reset"  value="Reset" /></td></tr>
     <tr bgcolor=#e5d8b2> <td colspan="2" align="center"><a href="empty.php"><img src="ep.png"></a></td></tr>
    </td>
    </tr>
</table>

</form>

</body>
</html>

Then create empty.php to make your folder empty.

<?PHP

function empty_folder($folder, $debug = false){
 
    if ($debug) {
        header("location: czip.php");
    }
 
    $d = dir($folder);
 
    while (false !== ($entry = $d->read())) {
 
        $isdir = is_dir($folder."/".$entry);
     
        if (!$isdir and $entry!="." and $entry!="..") {
     
            unlink($folder."/".$entry);
         
        } elseif ($isdir  and $entry!="." and $entry!="..") {
     
            empty_folder($folder."/".$entry,$debug);
         
            rmdir($folder."/".$entry);
         
        }
    }
    $d->close();
}
empty_folder("files",true);
?>

4 comments: