-
Posts
36 -
Joined
-
Last visited
Never
Profile Information
-
Gender
Not Telling
seularts's Achievements

Member (2/5)
0
Reputation
-
Here is the rest of the code: <?php /** * Class to dynamically create a zip file (archive) of file(s) and/or directory * * @author Rochak Chauhan www.rochakchauhan.com * @package CreateZipFile * @see Distributed under "General Public License" * * @version 1.0 */ class CreateZipFile { public $compressedData = array(); public $centralDirectory = array(); // central directory public $endOfCentralDirectory = "\x50\x4b\x05\x06\x00\x00\x00\x00"; //end of Central directory record public $oldOffset = 0; /** * Function to create the directory where the file(s) will be unzipped * * @param string $directoryName * @access public * @return void */ public function addDirectory($directoryName) { $directoryName = str_replace("\\", "/", $directoryName); $feedArrayRow = "\x50\x4b\x03\x04"; $feedArrayRow .= "\x0a\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x00\x00\x00\x00"; $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("v", strlen($directoryName) ); $feedArrayRow .= pack("v", 0 ); $feedArrayRow .= $directoryName; $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $this->compressedData[] = $feedArrayRow; $newOffset = strlen(implode("", $this->compressedData)); $addCentralRecord = "\x50\x4b\x01\x02"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x0a\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x00\x00\x00\x00"; $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("v", strlen($directoryName) ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("V", 16 ); $addCentralRecord .= pack("V", $this->oldOffset ); $this->oldOffset = $newOffset; $addCentralRecord .= $directoryName; $this->centralDirectory[] = $addCentralRecord; } /** * Function to add file(s) to the specified directory in the archive * * @param string $directoryName * @param string $data * @return void * @access public */ public function addFile($data, $directoryName) { $directoryName = str_replace("\\", "/", $directoryName); $feedArrayRow = "\x50\x4b\x03\x04"; $feedArrayRow .= "\x14\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x08\x00"; $feedArrayRow .= "\x00\x00\x00\x00"; $uncompressedLength = strlen($data); $compression = crc32($data); $gzCompressedData = gzcompress($data); $gzCompressedData = substr( substr($gzCompressedData, 0, strlen($gzCompressedData) - 4), 2); $compressedLength = strlen($gzCompressedData); $feedArrayRow .= pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); $feedArrayRow .= pack("v", strlen($directoryName) ); $feedArrayRow .= pack("v", 0 ); $feedArrayRow .= $directoryName; $feedArrayRow .= $gzCompressedData; $feedArrayRow .= pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); $this->compressedData[] = $feedArrayRow; $newOffset = strlen(implode("", $this->compressedData)); $addCentralRecord = "\x50\x4b\x01\x02"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x14\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x08\x00"; $addCentralRecord .="\x00\x00\x00\x00"; $addCentralRecord .= pack("V",$compression); $addCentralRecord .= pack("V",$compressedLength); $addCentralRecord .= pack("V",$uncompressedLength); $addCentralRecord .= pack("v", strlen($directoryName) ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("V", 32 ); $addCentralRecord .= pack("V", $this->oldOffset ); $this->oldOffset = $newOffset; $addCentralRecord .= $directoryName; $this->centralDirectory[] = $addCentralRecord; } /** * Function to return the zip file * * @return zipfile (archive) * @access public * @return void */ public function getZippedfile() { $data = implode("", $this->compressedData); $controlDirectory = implode("", $this->centralDirectory); return $data. $controlDirectory. $this->endOfCentralDirectory. pack("v", sizeof($this->centralDirectory)). pack("v", sizeof($this->centralDirectory)). pack("V", strlen($controlDirectory)). pack("V", strlen($data)). "\x00\x00"; } /** * * Function to force the download of the archive as soon as it is created * * @param archiveName string - name of the created archive file * @access public * @return ZipFile via Header */ public function forceDownload($archiveName) { if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } // Security checks if( $archiveName == "" ) { echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>"; exit; } elseif ( ! file_exists( $archiveName ) ) { echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>"; exit; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=".basename($archiveName).";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($archiveName)); readfile("$archiveName"); } /** * Function to parse a directory to return all its files and sub directories as array * * @param string $dir * @access protected * @return array */ protected function parseDirectory($rootPath, $seperator="/"){ $fileArray=array(); $handle = opendir($rootPath); while( ($file = @readdir($handle))!==false) { if($file !='.' && $file !='..'){ if (is_dir($rootPath.$seperator.$file)){ $array=$this->parseDirectory($rootPath.$seperator.$file); $fileArray=array_merge($array,$fileArray); } else { $fileArray[]=$rootPath.$seperator.$file; } } } return $fileArray; } /** * Function to Zip entire directory with all its files and subdirectories * * @param string $dirName * @access public * @return void */ public function zipDirectory($dirName, $outputDir) { if (!is_dir($dirName)){ trigger_error("CreateZipFile FATAL ERROR: Could not locate the specified directory $dirName", E_USER_ERROR); } $tmp=$this->parseDirectory($dirName); $count=count($tmp); $this->addDirectory($outputDir); for ($i=0;$i<$count;$i++){ $fileToZip=trim($tmp[$i]); $newOutputDir=substr($fileToZip,0,(strrpos($fileToZip,'/')+1)); $outputDir=$outputDir.$newOutputDir; $fileContents=file_get_contents($fileToZip); $this->addFile($fileContents,$fileToZip); } } } ?> Still can't figure it out where too switch the script to accept empty directories
-
Ok. I managed to do something like this: I used CreateZipFile classs from php classes! <?php include_once 'CreateZipFile.inc.php'; $createZip = new CreateZipFile; $createZip->zipDirectory('binary', ''); $zipFileName = 'backup.zip'; $handle = fopen($zipFileName, 'wb'); $out = fwrite($handle, $createZip->getZippedFile()); fclose($handle); $createZip->forceDownload($zipFileName); @unlink($zipFileName); ?> but there is still one small issue. The archive doesn't contain any empty folders within the binary folder.
-
the problems was that i couldn't get the size of the uploaded image, but I solved it like this: list($width, $height, $type, $attr) = getimagesize($_FILES['uploaded_file']['tmp_name']); if ($width < 100 || $height < 100) { echo 'whatever'; }
-
Ok, in this code here I want to include a getimagesize in respect to the resolution. So for example if I have a 728x90 image I want it to go to abc folder that corresponds to this dimensions. Can anyone give me an idea on how to make this work!? <form enctype="multipart/form-data" action="" method="POST"> <select name="select" class="select"> <option value="">Site: <?php $dirPath = dir('./'); while (($file = $dirPath->read()) !== false) { if($file == "." || $file == ".." || $file == "error_log" || $file == "img" || preg_match("/\.php/i",$file) || preg_match("/\.jpg/i",$file) || preg_match("/\.css/i",$file) ) continue; echo "<option value=\"" . trim($file) . "\">" . $file . "\n"; } $dirPath->close(); ?> </select> <select name="rez" class="select"> <option value="">Rezolutie:</option> <option value="abc">728x90</option> <option value="def">468x60</option> <option value="ghj">234x60</option> </select> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <input type="text" value="Website Link" onFocus="this.value=''" name="link" id="link"><br /> Selecteaza fisier: <input name="uploaded_file" type="file" /> <input type="submit" value="" id="ok" class="browse" /> </form> <?php $select=$_POST['select']; $rez=$_POST['rez']; $link=$_POST['link']; $target_path = $select.'/'; if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { if($link!='' && $link!='Website Link'){ $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext == "jpg" || "gif" || "png") && ($_FILES["uploaded_file"]["type"] == "image/jpeg" || "image/gif" || "image/png") && ($_FILES["uploaded_file"]["size"] < 1000000)) { $newname = dirname(__FILE__).'/'.$select.'/'.$rez.'/'.$filename; if (!file_exists($newname)) { if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) { $exp=explode('.jpg', $filename); $link_path = dirname(__FILE__).'/'.$select.'/'.$rez.'/'.$exp[0].'.php'; $cont = ' <link rel="stylesheet" type="text/css" href="http://www.thecall.ro/max/reset.css" /> <a href="'.$link.'"><img src="http://www.thecall.ro/max/'.$select.'/'.$rez.'/'.$filename.'" /></a><br /> '.$link.' '; $handle = fopen($link_path, 'x+'); fwrite($handle, $cont); fclose($handle); echo "<u>Reclama a fost atasata in Website-ul</u>: ".$select."<br /><br /><center><a href=\"".$link."\"><img src=\"./".$select.'/'.$rez.'/'.$filename."\" id=\"add_img\" width=\"50%\" /></a><br />".$link."</center> "; } else { echo "Eroare: <b class=\"err\">Reclama nu a putut fi atasata!</b>"; } } else { echo "Eroare: <b class=\"err\">Reclama existenta!</b>"; } } else { echo "Eroare: <b class=\"err\">Doar reclame cu format .jpg .gif .png cu marimea sub 1MB sunt acceptate!</b>"; } } else { echo "Eroare: <b class=\"err\">Introduceti un Link valid!</b>"; } } else { echo ""; } ?> this is one of the ways i tried to get it together, but it does not stick to my code The img.jpg is 410x533 <?php $filename = "img.jpg"; $imgsize = getimagesize($filename); echo "<IMG SRC=\"$filename\" $imgsize[3]>"; echo $imgsize[3]; echo '<br />'; if($imgsize[3]=='width="410" height="533"'){ echo 'Ok'; }else{ echo 'Ups'; } ?>