Gc\Media\File::upload PHP Метод

upload() публичный Метод

Upload file to the server
public upload ( ) : boolean
Результат boolean
    public function upload()
    {
        $dir = $this->getPath() . $this->getDirectory();
        if (!is_dir($dir)) {
            mkdir($dir, self::FILE_PERMISSION, true);
            $tmpDir = $dir;
            while ($tmpDir != GC_MEDIA_PATH . '/files') {
                chmod($tmpDir, self::FILE_PERMISSION);
                $tmpDir = realpath(dirname($tmpDir));
            }
        }
        $this->getFileTransfer()->setDestination($dir);
        $filename = $this->getFileName();
        $filenames = empty($filename) ? null : $filename;
        $filenames = $this->getFileTransfer()->getFileName($filenames, false);
        if (!is_array($filenames)) {
            $filenames = array();
            $files = $this->getFileTransfer()->getFileInfo($filename);
            foreach ($files as $key => $file) {
                if (!empty($file['name'])) {
                    $filenames[$key] = $file['name'];
                    break;
                }
            }
        }
        $data = array();
        foreach ($filenames as $key => $fileName) {
            $info = pathinfo($fileName);
            $this->getFileTransfer()->addFilter('Rename', array('target' => $this->getFileTransfer()->getDestination($fileName) . '/' . uniqid() . (empty($info['extension']) ? '' : '.' . $info['extension']), 'overwrite' => true));
            $validator = $this->getFileTransfer()->getValidator('Upload');
            if (!empty($validator)) {
                $validator->setFiles($this->getFileTransfer()->getFileInfo($fileName))->getFiles();
            }
            if ($this->getFileTransfer()->receive($key)) {
                $files = $this->getFileTransfer()->getFileInfo($key);
                foreach ($files as $fileData) {
                    $fileObject = array();
                    $fileObject['name'] = 'New Image Upload Complete:   ' . $fileData['name'];
                    $fileObject['filename'] = $this->getDirectory() . '/' . $fileData['name'];
                    $fileObject['size'] = $fileData['size'];
                    $fileObject['type'] = $fileData['type'];
                    $fileObject['thumbnail_url'] = $this->getDirectory() . '/' . $fileData['name'];
                    $router = Registry::get('Application')->getMvcEvent()->getRouter();
                    $fileObject['delete_url'] = $router->assemble(array('document_id' => $this->getDocument()->getId(), 'property_id' => $this->getProperty()->getId(), 'file' => base64_encode($fileData['name'])), array('name' => 'content/media/remove'));
                    $fileObject['delete_type'] = 'DELETE';
                    $data[] = $fileObject;
                }
            }
        }
        if (!empty($data)) {
            $this->setFiles($data);
            return true;
        }
        return false;
    }

Usage Example

Пример #1
0
 /**
  * Test
  *
  * @return void
  */
 public function testUploadWithoutValidators()
 {
     $this->initializeFiles();
     $this->object->getFileTransfer()->removeValidator('Zend\\Validator\\File\\Upload');
     $result = $this->object->upload();
     $this->assertTrue($this->object->upload());
     $files = $this->object->getFiles();
     if (is_array($files)) {
         foreach ($files as $file) {
             $this->object->remove($file['filename']);
         }
     }
     $this->removeDirectories();
     $this->assertTrue($result);
 }
All Usage Examples Of Gc\Media\File::upload