Recommend this page to a friend! |
Create ZIP File | > | All threads | > | Create ZIP File | > | (Un) Subscribe thread alerts |
|
1 - 10 | 11 - 11 |
![]() Hi how do i make this work please aint a clue
![]() Hi Paul,
It pretty simple... Step #1) Download the source code/files. Step #2) Create a file test.php (say) Step #3) Write this in the file: <?php include_once("createZip.inc.php"); $createZip = new createZip; $createZip -> addDirectory("dir/"); $fileContents = file_get_contents("img.jpg"); $createZip -> addFile($fileContents, "dir/img.jpg"); $fileName = "archive.zip"; $fd = fopen ($fileName, "wb"); $out = fwrite ($fd, $createZip -> getZippedfile()); fclose ($fd); $createZip -> forceDownload($fileName); @unlink($fileName); ?> Result: The above code will create a zip file named archive.zip which will have img.jpg it it. Simple ?
![]() aahh i see i have a friend who as a site and wants the downloads as zip files so need a bit of help hehe
downzip.php <?php require_once("include/bittorrent.php"); require_once("include/phpzip.php"); //require_once ("include/user_functions.php"); dbconn(); parked(); if (!preg_match(':^/(\d{1,10})/(.+)\.torrent$:', $_SERVER["PATH_INFO"], $matches)) httperr(); $id = 0 + $matches[1]; if (!$id) httperr(); $res = mysql_query("SELECT name, filename, FROM torrents WHERE id = $id") or sqlerr(__FILE__, __LINE__); $row = mysql_fetch_assoc($res); $fn = "$torrent_dir/$id.torrent"; if (!$row || !is_file($fn) || !is_readable($fn)) httperr(); if (strlen($CURUSER['passkey']) != 32) { $CURUSER['passkey'] = md5($CURUSER['username'].get_date_time().$CURUSER['passhash']); mysql_query("UPDATE users SET passkey='$CURUSER[passkey]' WHERE id=$CURUSER[id]"); } mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = $id"); //Passkey Mod require_once "include/benc.php"; $dict = bdec_file($fn, (1024*1024)); $dict['value']['announce']['value'] = "$BASEURL/announce.php?passkey=$CURUSER[passkey]"; $dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']).":".$dict['value']['announce']['value']; $dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']); $name = str_replace(array(" ", ".","-") , "_" ,$row["name"]); $new = benc($dict); $f = $torrent_dir.'/'.$name.'.torrent'; $newFile = fopen($f ,"w"); fwrite ($newFile,$new); fclose($newFile); $file = array(); $zip = new PHPZip(); $file[] = "$f" ; $fName = "$torrent_dir/$name.zip" ; $zip->Zip($file, $fName); $zip->forceDownload($fName); unlink($torrent_dir.'/'.$name.'.torrent'); unlink($torrent_dir.'/'.$name.'.zip'); ?> phpzip.php (include folder) <?php # # PHPZip v1.2 by Sext ([email protected]) 2002-11-18 # (Changed: 2003-03-01) # # Makes zip archive # # Based on "Zip file creation class", uses zLib # # Examples in sample1.php, sample2.php and sample3.php # class PHPZip { function Zip($dir, $zipfilename) { if (@function_exists('gzcompress')) { $curdir = getcwd(); if (is_array($dir)) { $filelist = $dir; } else { $filelist = $this -> GetFileList($dir); } if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); else chdir($curdir); if (count($filelist)>0) { foreach($filelist as $filename) { if (is_file($filename)) { $fd = fopen ($filename, "r"); $content = fread ($fd, filesize ($filename)); fclose ($fd); if (is_array($dir)) $filename = basename($filename); $this -> addFile($content, $filename); } } $out = $this -> file(); chdir($curdir); $fp = fopen($zipfilename, "w"); fwrite($fp, $out, strlen($out)); fclose($fp); } return 1; } else return 0; } function GetFileList($dir) { if (file_exists($dir)) { $args = func_get_args(); $pref = $args[1]; $dh = opendir($dir); while($files = readdir($dh)) { if (($files!=".")&&($files!="..")) { if (is_dir($dir.$files)) { $curdir = getcwd(); chdir($dir.$files); $file = array_merge($file, $this -> GetFileList("", "$pref$files/")); chdir($curdir); } else $file[]=$pref.$files; } } closedir($dh); } return $file; } var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; /** * Converts an Unix timestamp to a four byte DOS date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current Unix timestamp * * @return integer the current date in a four byte DOS format * * @access private */ function unix2DosTime($unixtime = 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } // end if return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); } // end of the 'unix2DosTime()' method /** * Adds "file" to archive * * @param string file contents * @param string name of the file in the archive (may contains the path) * @param integer the current timestamp * * @access public */ function addFile($data, $name, $time = 0) { $name = str_replace('\\', '/', $name); $dtime = dechex($this->unix2DosTime($time)); $hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1]; eval('$hexdtime = "' . $hexdtime . '";'); $fr = "\x50\x4b\x03\x04"; $fr .= "\x14\x00"; // ver needed to extract $fr .= "\x00\x00"; // gen purpose bit flag $fr .= "\x08\x00"; // compression method $fr .= $hexdtime; // last mod time and date // "local file header" segment $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $c_len = strlen($zdata); $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug $fr .= pack('V', $crc); // crc32 $fr .= pack('V', $c_len); // compressed filesize $fr .= pack('V', $unc_len); // uncompressed filesize $fr .= pack('v', strlen($name)); // length of filename $fr .= pack('v', 0); // extra field length $fr .= $name; // "file data" segment $fr .= $zdata; // "data descriptor" segment (optional but necessary if archive is not // served as file) $fr .= pack('V', $crc); // crc32 $fr .= pack('V', $c_len); // compressed filesize $fr .= pack('V', $unc_len); // uncompressed filesize // add this entry to array $this -> datasec[] = $fr; $new_offset = strlen(implode('', $this->datasec)); // now add to central directory record $cdrec = "\x50\x4b\x01\x02"; $cdrec .= "\x00\x00"; // version made by $cdrec .= "\x14\x00"; // version needed to extract $cdrec .= "\x00\x00"; // gen purpose bit flag $cdrec .= "\x08\x00"; // compression method $cdrec .= $hexdtime; // last mod time & date $cdrec .= pack('V', $crc); // crc32 $cdrec .= pack('V', $c_len); // compressed filesize $cdrec .= pack('V', $unc_len); // uncompressed filesize $cdrec .= pack('v', strlen($name) ); // length of filename $cdrec .= pack('v', 0 ); // extra field length $cdrec .= pack('v', 0 ); // file comment length $cdrec .= pack('v', 0 ); // disk number start $cdrec .= pack('v', 0 ); // internal file attributes $cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header $this -> old_offset = $new_offset; $cdrec .= $name; // optional extra field, file comment goes here // save to central directory $this -> ctrl_dir[] = $cdrec; } // end of the 'addFile()' method /** * Dumps out file * * @return string the zipped file * * @access public */ function file() { $data = implode('', $this -> datasec); $ctrldir = implode('', $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk" pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall pack('V', strlen($ctrldir)) . // size of central dir pack('V', strlen($data)) . // offset to start of central dir "\x00\x00"; // .zip file comment length } // end of the 'file()' method } // end of the 'PHPZip' class ?>
![]() Hi
I want to add the entire root of my website to a zip file, how do i do that? Thanks.
![]() Sure u can do that, just answer few of my queries first ?
1) Linux or Windows ? 2) PHP version ? 3) memory_limit ? (read from phpinfo) 4) Approx size of your root directory (in MB) Rochak Chauhan
![]() Hi Er,
1) Windows - Using apache 2) PHP 5.2.9 3) Mem Limit: 128MB 4) Size of root: 488KB Thanks for the help. Nigel
![]() Hi,
I have updated my class. Please download and try again. I have added feature to unzip all the files and directories inside a directory. Please note: The max size of this zip file can be less that the "memory_limit" mentioned in the php.ini. Best Regards, Rochak Chauhan www.rochakchauhan.com
![]() Hi Rochak
Why is it that it outputs 4 different zip files in the working directory? Im assuming these are temp files, can they be deleted after the zip has been created or is there a way of allowing the user to download WITHOUT saving the zip on disk? Thanks for the help.
![]() Simple, but if I do not want to download the file but
I just want to save it in a folder? Thank you very much!
![]() Hi, I have been taking a look in this class, and it is really interesting and very useful for what I want, but the problem is that I dont get what I want after several tries!!
I have a folder in my server with different kind of files in it such us .xml, .png, .jpg, etc and what I want is to get a .zip which will contain everything what is in that folder. Let's put it more clear with an example: -Name folder: "Project" -"Project" contains: confi.xml, picture.png, par.xml, etc... -I want to get "Project.zip" which will have in it: confi.xml, picture.png, par.xml, etc... Could you tell me any clue to get that with this code??? Thanks a lot in advance!!!! |
1 - 10 | 11 - 11 |
info at phpclasses dot org
.