/** * Checks if the files are valid * * @param string|array $files (Optional) Files to check * @return boolean True if all checks are valid */ public function isValid($files = null) { // Workaround for a PHP error returning empty $_FILES when form data exceeds php settings if (empty($this->_files) && $_SERVER['CONTENT_LENGTH'] > 0) { if (is_array($files)) { $files = current($files); } $temp = array($files => array('name' => $files, 'error' => 1)); $validator = $this->_validators['Zend_Validate_File_Upload']; $validator->setFiles($temp)->isValid($files, null); $this->_messages += $validator->getMessages(); return false; } return parent::isValid($files); }
/** * Checks if the files are valid * * @param string|array $files (Optional) Files to check * @return boolean True if all checks are valid */ public function isValid($files = null) { // Workaround for WebServer not conforming HTTP and omitting CONTENT_LENGTH $content = 0; if (isset($_SERVER['CONTENT_LENGTH'])) { $content = $_SERVER['CONTENT_LENGTH']; } else { if (!empty($_POST)) { $content = serialize($_POST); } } // Workaround for a PHP error returning empty $_FILES when form data exceeds php settings if (empty($this->_files) && $content > 0) { if (is_array($files)) { $files = current($files); } $temp = array($files => array('name' => $files, 'error' => 1)); $validator = $this->_validators['Zend_Validate_File_Upload']; $validator->setFiles($temp)->isValid($files, null); $this->_messages += $validator->getMessages(); return false; } return parent::isValid($files); }
public function handleUpload() { $validate = $this->validateClass(); if ($validate !== true) { return $validate; } $translate = Zend_Registry::get("Zend_Translate"); $zft = new Zend_File_Transfer(); $this->_adapter = $zft->getAdapter('http'); if ($this->_adapter->isUploaded()) { if ($this->_rename) { if (!$this->_useMd5Name) { $name = $this->_name; } else { $name = $this->_adapter->getHash('md5'); } if ($this->_useFileExtension) { $extension = substr($this->_adapter->getFileName(null, false), strrpos($this->_adapter->getFileName(null, false), '.') + 1); $name .= '.' . strtolower($extension); } } $path = $this->_genPath($name); if (Agana_Util_FileHandle::isWritableDir($path)) { $this->_adapter->addValidator('ExcludeExtension', false, 'php,exe,so,dll')->addValidator('Size', false, $this->_sizeLimit)->addValidator('Extension', false, $this->_allowedExtensions)->setDestination($path); if ($this->_rename) { $this->_adapter->addFilter('Rename', array('target' => $path . $name, 'overwrite' => true)); } if ($this->_adapter->isValid()) { try { $this->_adapter->receive(); $this->_adapter->setOptions(array('useByteString' => false)); $file = $this->_adapter->getFileInfo(); $file = array_shift($file); $result['name'] = $file['name']; $result['type'] = $file['type']; $result['size'] = $file['size']; /** * Resize images based on dimensions options */ //TODO test if the file uploaded is a image foreach ($this->_dimensions as $sizename => $dim) { $wide = WideImage::load($file['tmp_name']); $imgResult = $wide->resize($dim['width'], $dim['height'], 'inside', 'down'); $resizedfilename = Agana_Util_FileHandle::genFileNameByClassification($file['name'], $sizename); if (strpos(strtolower($file['type']), 'png') !== false) { $compression = 8; } else { $compression = 80; } $imgResult->saveToFile($file['destination'] . '/' . $resizedfilename, $compression); } return $result; } catch (Zend_File_Transfer_Exception $e) { return array('error' => $e->getMessage()); } } else { $error = array(); foreach ($this->_adapter->getMessages() as $value) { $error[] = $value; } return array('error' => $translate->_($error)); } } else { return array('error' => $translate->_('file could not be created or path is not writable')); } } else { return array('error' => $translate->_('No file uploaded')); } }