upload = $upload; $this->uploadDir = $uploadDir; if($upload['error']) { $this->error = true; } elseif($upload['size']==0) { $this->error = true; #$this->fileError = true; $this->fileEmpty = true; } elseif($upload['size']>$this->maxAcceptedFilesize*1000) { $this->error = true; #$this->fileError = true; $this->fileTooLarge = true; } if($image=getimagesize($upload['tmp_name'])) { $this->isImage = true; $this->imageWidth = $image[0]; $this->imageHeight = $image[1]; if($image[2]==1) $this->imageType = 'gif'; if($image[2]==2) $this->imageType = 'jpeg'; if($image[2]==3) $this->imageType = 'png'; } if(!preg_match('/^[a-zA-Z0-9._\-]+$/', $this->uploadFileName) || mb_substr($this->uploadFileName, 0, 1)=='_') { #$this->error = true; #$this->fileError = true; $this->fileNameInvalid = true; } if(file_exists($this->uploadDir.$this->uploadFileName)) { #$this->fileError = true; $this->fileExists = true; } if(!$this->fileError) { $tempFileName = uniqid(rand()).'.tmp'; if(move_uploaded_file($this->upload['tmp_name'],$this->uploadDir.$tempFileName)) { $this->tempFile = $tempFileName; } else { $this->uploadError = true; } } } /** * saves the uploaded file * * @param ... */ public function saveFile($filename='') { if(empty($filename)) { if($this->fileNameInvalid) return false; $filename = $this->uploadFileName; } if(copy($this->uploadDir.$this->tempFile, $this->uploadDir.$filename)) return true; else return false; } /** * modifies and saves the uploaded image * * @param ... */ public function saveModifiedImage($width, $height, $compression, $filename='') { if(empty($filename)) { if($this->fileNameInvalid) return false; $filename = $this->uploadFileName; } if($this->_resize_image($this->uploadDir.$this->tempFile, $this->uploadDir.$filename, $width, $height, $compression)) return true; else return false; } /** * resizes uploaded images * * @param string $uploaded_file : uploaded file * @param string $file : destination file * @param int $new_width : new width * @param int $new_height : new height * @param int $compression : compression rate * @return bool */ private function _resize_image($uploaded_file, $file, $new_width, $new_height, $compression=80) { if(file_exists($file)) { #@chmod($file, 0777); @unlink($file); } #$image_info = getimagesize($uploaded_file); if(!$this->isImage || empty($this->imageType)) $error = true; if(empty($error)) { if($this->imageType=='gif') { $current_image = @imagecreatefromgif($uploaded_file) or $error = true; if(empty($error)) $new_image = @imagecreate($new_width,$new_height) or $error = true; if(empty($error)) @imagecopyresampled($new_image,$current_image,0,0,0,0,$new_width,$new_height,$this->imageWidth,$this->imageWidth) or $error=true; if(empty($error)) @imagegif($new_image, $file) or $error = true; } elseif($this->imageType=='jpeg') { $current_image = @imagecreatefromjpeg($uploaded_file) or $error = true; if(empty($error)) $new_image=@imagecreatetruecolor($new_width,$new_height) or $error = true; if(empty($error)) @imagecopyresampled($new_image,$current_image,0,0,0,0,$new_width,$new_height,$this->imageWidth,$this->imageHeight) or $error = true; if(empty($error)) @imagejpeg($new_image, $file, $compression) or $error = true; } elseif($this->imageType=='png') { $current_image = @imagecreatefrompng($uploaded_file) or $error = true; if(empty($error)) $new_image=@imagecreatetruecolor($new_width,$new_height) or $error = true; if(empty($error)) @imagecopyresampled($new_image,$current_image,0,0,0,0,$new_width,$new_height,$this->imageWidth,$this->imageHeight) or $error = true; if(empty($error)) @imagepng($new_image, $file) or $error = $true; } } if(empty($error)) return true; else return false; } function __destruct() { if($this->tempFile) { unlink($this->uploadDir.$this->tempFile); } } } ?>