-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzipCF.php
More file actions
150 lines (146 loc) · 4.19 KB
/
zipCF.php
File metadata and controls
150 lines (146 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
/**
* zipCF - Create Zip File with directory content
* Author : Abdul Awal
* Article Url: http://go.abdulawal.com/1
* Version: 1.0
* Released on: February 26 2016
*/
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ZipCF PHP - Create a Zip with contents in the current Direcory (php script)</title>
<style type="text/css">
body{
font-family: arial;
font-size: 14px;
padding: 0;
margin: 0;
text-align: center;
}
h3{
text-align: center;
}
.container{
width: 600px;
margin: 100px auto 0 auto;
max-width: 100%;
}
label{
font-weight: bold;
margin: 10px 0;
}
input[type="text"]{
border: 1px solid #eee;
padding: 10px;
display: block;
margin: 10px auto;
}
input[type="submit"]{
padding: 10px 20px;
display: block;
margin: 10px auto;
border: 2px solid green;
background: #fff;
}
.copyright{
position: fixed;
bottom:0;
background: #333;
color: #fff;
width: 100%;
padding: 10px 20px;
text-align: center;
}
.copyright a{
color: #eee;
}
</style>
</head>
<body>
<div class="container">
<h3>ZipCF - Make zip file with current directory!</h3>
<form action="" method="POST">
<label for="zip-file-name">Zip File Name</label> <br>
<input type="text" id="zip-file-name" name="zip_file_name" value="" placeholder="Name of the zip file" />
<input type="submit" value="Create Zip File" />
</form>
<?php
if(isset($_POST['zip_file_name'])){
if(!empty($_POST['zip_file_name'])){
ini_set('max_execution_time', 10000);
/* creates a compressed zip file */
function generate_zip_file($files = array(),$destination = '',$overwrite = false) {
//if the zip file already exists and overwrite is false, return false
if(file_exists($destination) && !$overwrite) { return false; }
//vars
$valid_files = array();
//if files were passed in...
if(is_array($files)) {
//cycle through each file
foreach($files as $file) {
//make sure the file exists
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
//if we have good files...
if(count($valid_files)) {
//create the archive
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
//add the files
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
//debug
//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
//close the zip -- done!
$zip->close();
//check to make sure the file exists
return file_exists($destination);
}
else
{
return false;
}
}
function getDirItems($dir, &$results = array()){
$files = scandir($dir);
foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
list($unused_path, $used_path) = explode(basename(__DIR__).'/', $path);
$file_name = $dir.DIRECTORY_SEPARATOR.$value;
if(!is_dir($path)) {
$results[] = $used_path;
} else if($value != "." && $value != "..") {
getDirItems($path, $results);
$results[] = $value.'/';
}
}
return $results;
}
$get_name = $_POST['zip_file_name'];
$get_ext = '.zip';
$final_name = $get_name.$get_ext;
//if true, good; if false, zip creation failed
$result = generate_zip_file(getDirItems(dirname(__FILE__)),$final_name);
if($result){
echo "Successfully Created Zip file $final_name";
} else {
echo "Failed to create zip file, Please try again";
}
} else {
echo "Please provide a name for the zip file";
}
}
?>
</div>
<div class="copyright">Copyright © <?php echo date("Y"); ?> . All rights Reserved by <a href="http://abdulawal.com/" target="_blank">Abdul Awal Uzzal</a></div>
</body>
</html>