예제 #1
0
 /**
  * @param array $file
  *
  * @return App_Model_File|array
  *
  * @throws App_Exception_FileIsNotReadable
  * @throws App_Exception_UnableToCopyFile
  */
 public function save(array $file)
 {
     if (!is_readable($file['tmpName'])) {
         throw new App_Exception_FileIsNotReadable($file['tmpName']);
     }
     $identifier = md5(microtime());
     try {
         $ext = explode('.', $file['name'])[count(explode('.', $file['name'])) - 1];
         $newFilePath = $this->_getAbsoluteFilePath($identifier, $ext, true);
         copy($file['tmpName'], $newFilePath);
         chmod($newFilePath, 0777);
         $file = new App_Model_File(array('name' => $file['name'], 'type' => $file['type'], 'size' => $file['size'], 'ext' => $ext, 'identity' => $identifier, 'user' => (string) self::$_user->id));
         $file->save();
     } catch (\Exception $e) {
         throw new App_Exception_UnableToCopyFile($e->getMessage());
     }
     return $file;
 }
예제 #2
0
파일: Upload.php 프로젝트: kvenkat971/FileZ
 /**
  * Create a new File object from posted values and store it into the database.
  *
  * @param array $post       ~= $_POST
  * @param array $files      ~= $_FILES
  * @return App_Model_File
  */
 private function saveFile($post, $uploadedFile)
 {
     // Computing default values
     $comment = array_key_exists('comment', $post) ? $post['comment'] : '';
     // Validating lifetime
     $lifetime = fz_config_get('app', 'default_file_lifetime', 10);
     if (array_key_exists('lifetime', $post) && is_numeric($post['lifetime'])) {
         $lifetime = intval($post['lifetime']);
         $maxLifetime = intval(fz_config_get('app', 'max_file_lifetime', 20));
         if ($lifetime > $maxLifetime) {
             $lifetime = $maxLifetime;
         }
     }
     $availableFrom = array_key_exists('start-from', $post) ? $post['start-from'] : null;
     $availableFrom = new Zend_Date($availableFrom, Zend_Date::DATE_SHORT);
     $availableUntil = clone $availableFrom;
     $availableUntil->add($lifetime, Zend_Date::DAY);
     $user = $this->getUser();
     // Storing values
     $file = new App_Model_File();
     $file->setFileInfo($uploadedFile);
     if (option('visitor')) {
         $file->setVisitorUploader();
     } else {
         $file->setUploader($user);
     }
     $file->setCreatedAt(new Zend_Date());
     $file->comment = substr($comment, 0, 199);
     $file->setAvailableFrom($availableFrom);
     $file->setAvailableUntil($availableUntil);
     $file->notify_uploader = isset($post['email-notifications']);
     if (!empty($post['password'])) {
         $file->setPassword($post['password']);
     }
     try {
         $file->save();
         if ($file->moveUploadedFile($uploadedFile)) {
             fz_log('Saved "' . $file->file_name . '"[' . $file->id . '] uploaded by ' . $user);
             return $file;
         } else {
             $file->delete();
             return null;
         }
     } catch (Exception $e) {
         fz_log('Can\'t save file "' . $uploadedFile['name'] . '" uploaded by ' . $user, FZ_LOG_ERROR);
         fz_log($e, FZ_LOG_ERROR);
         return null;
     }
 }