Пример #1
0
 /**
  * upload
  * @author Thomas Schedler <*****@*****.**>
  * @version 1.0
  */
 protected function upload()
 {
     $this->core->logger->debug('massiveart.files.File->upload()');
     try {
         if ($this->objUpload != null && $this->objUpload instanceof Zend_File_Transfer_Adapter_Abstract) {
             /**
              * first check upload path
              */
             $this->checkUploadPath();
             $arrFileInfos = pathinfo($this->objUpload->getFileName($this->_FILE_NAME));
             $this->strExtension = strtolower($arrFileInfos['extension']);
             $this->strTitle = $arrFileInfos['filename'];
             $this->dblSize = $this->objUpload->getFileSize($this->_FILE_NAME);
             $this->strMimeType = $this->objUpload->getMimeType($this->_FILE_NAME);
             /**
              * receive file
              */
             $this->objUpload->addFilter('Rename', $this->getUploadPath() . $this->strFileId . '.' . $this->strExtension, $this->_FILE_NAME);
             $this->objUpload->receive($this->_FILE_NAME);
             /**
              * check public file path
              */
             $this->checkPublicFilePath();
             /**
              * public copy
              */
             //FIXME why ???
             copy($this->getUploadPath() . $this->strFileId . '.' . $this->strExtension, $this->getPublicFilePath() . $this->strFileId . '.' . $this->strExtension);
         }
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }
Пример #2
0
 /**
  * Set transfer adapter
  *
  * @param  string|Zend_File_Transfer_Adapter_Abstract $adapter
  * @return Zend_Form_Element_File
  * @throws Zend_Form_Element_Exception
  */
 public function setTransferAdapter($adapter)
 {
     if ($adapter instanceof Zend_File_Transfer_Adapter_Abstract) {
         $this->_adapter = $adapter;
     } elseif (is_string($adapter)) {
         $loader = $this->getPluginLoader(self::TRANSFER_ADAPTER);
         $class = $loader->load($adapter);
         $this->_adapter = new $class();
     } else {
         throw new Zend_Form_Element_Exception('Invalid adapter specified');
     }
     foreach (array('filter', 'validate') as $type) {
         $loader = $this->getPluginLoader($type);
         $this->_adapter->setPluginLoader($loader, $type);
     }
     return $this;
 }
Пример #3
0
 /**
  * upload
  * @author Thomas Schedler <*****@*****.**>
  */
 protected function upload($blnIsNewVersion = false)
 {
     $this->core->logger->debug('massiveart.files.File->upload()');
     try {
         if ($this->objUpload != null && $this->objUpload instanceof Zend_File_Transfer_Adapter_Abstract) {
             /**
              * first check upload path
              */
             $this->checkUploadPath();
             $arrFileInfos = pathinfo($this->objUpload->getFileName($this->_FILE_NAME));
             $this->strExtension = strtolower($arrFileInfos['extension']);
             $this->strTitle = $arrFileInfos['filename'];
             $this->dblSize = $this->objUpload->getFileSize($this->_FILE_NAME);
             $this->strMimeType = $this->objUpload->getMimeType($this->_FILE_NAME);
             if ($blnIsNewVersion == true && $this->objFileData instanceof Zend_Db_Table_Row_Abstract) {
                 $this->strFileId = $this->objFileData->fileId;
             } else {
                 /**
                  * make fileId conform
                  */
                 $this->strFileId = $this->makeFileIdConform($this->strTitle);
                 /**
                  * check uniqueness of fileId
                  */
                 $this->strFileId = $this->checkFileIdUniqueness($this->strFileId);
             }
             /**
              * receive file
              */
             $this->objUpload->addFilter('Rename', array('target' => $this->getUploadPath() . $this->strFileId . '.' . $this->strExtension, 'overwrite' => true), $this->_FILE_NAME);
             $this->objUpload->receive($this->_FILE_NAME);
         }
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }
Пример #4
0
 /**
  * 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);
 }
Пример #5
0
 public function isPathWriteable($path)
 {
     return parent::_isPathWriteable($path);
 }
 /**
  * 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);
 }
Пример #7
0
 /**
  * jump over parent 'removeValidator' to remove 'Upload' validator
  * 
  */
 public function removeValidator($name)
 {
     return \Zend_File_Transfer_Adapter_Abstract::removeValidator($name);
 }
Пример #8
0
 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'));
     }
 }