Example #1
0
 public function addAction()
 {
     if (!$this->zfcUserAuthentication()->hasIdentity()) {
         return $this->redirect()->toRoute('zfcuser');
     }
     $form = new UploadForm();
     $optionSubject = $this->getSubjectTable()->getSubjectsForSelect();
     $form->get('subject')->setAttribute('options', $optionSubject);
     $optionCategory = $this->getCategoryTable()->getCategoriesForSelect();
     $form->get('category')->setAttribute('options', $optionCategory);
     $request = $this->getRequest();
     if ($request->isPost()) {
         $file = new File();
         $data = array_merge_recursive($this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray());
         $form->setData($data);
         $uploadPath = $this->getOptions()->getUploadFolderPath();
         // Validatoren
         $size = new Size(array('max' => $this->getOptions()->getMaxFileSizeInByte()));
         $extension = new Extension($this->getOptions()->getAllowedFileExtensions());
         // Filter für Zufallsnamen
         if ($this->options->getRandomizeFileName()) {
             $rename = new Rename(array('target' => $uploadPath . '/file', 'randomize' => true));
         } else {
             $rename = null;
         }
         //TODO Add to factory
         $adapter = new Http();
         $adapter->setValidators(array($size, $extension));
         $adapter->setFilters(array($rename));
         if (!$adapter->isValid()) {
             $dataError = $adapter->getMessages();
             array_merge($dataError, $adapter->getErrors());
             foreach ($dataError as $key => $row) {
                 echo $row;
             }
             header('HTTP/1.1 500 Internal Server Error');
             exit;
         } else {
             $adapter->setDestination($uploadPath);
             if ($adapter->receive()) {
                 $subjectID = $data['subject'];
                 $categoryID = $data['category'];
                 $dbdata = array();
                 $dbdata['fileName'] = $data['file']['name'];
                 $filename = $adapter->getFileName();
                 if (is_array($filename)) {
                     $dbdata['url'] = basename(current($filename));
                 } else {
                     $dbdata['url'] = basename($filename);
                 }
                 $file->exchangeArray($dbdata);
                 $this->getFileTable()->saveFile($file, $subjectID, $categoryID);
                 header('HTTP/1.1 200 OK');
                 exit;
             }
         }
     }
     return array('form' => $form);
 }
Example #2
0
 public function restPostFile()
 {
     $this->getServiceLocator()->get('Application')->getEventManager()->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function ($event) {
         $event->getResponse()->getHeaders()->addHeaderLine('Content-Type', 'text/plain');
     }, -10000);
     $postData = $this->params()->fromPost();
     $form = new Form\UploadForm();
     $form->bind($postData);
     $itemModel = Api::_()->getModel('File\\Model\\File');
     $response = array();
     if ($form->isValid() && $form->getFileTransfer()->isUploaded()) {
         if ($form->getFileTransfer()->receive()) {
             $files = $form->getFileTransfer()->getFileInfo();
             $itemModel->setUploadFiles($files);
             $itemModel->setConfigKey('default')->createFiles();
             $lastFileId = $itemModel->getLastFileId();
             if ($lastFileId) {
                 $item = $itemModel->getFile($lastFileId, array('self' => array('*', 'getUrl()', 'getThumb()')));
                 $file = array('id' => $item['id'], 'name' => $item['originalName'], 'size' => (int) $item['fileSize'], 'url' => $item['Url'], 'thumbnail_url' => $item['Thumb'], 'delete_type' => 'DELETE', 'delete_url' => '/api/file/' . $item['id']);
                 $response = array($file);
             }
         }
     } else {
     }
     return new JsonModel($response);
 }
Example #3
0
 public function restPostFile()
 {
     $postData = $this->params()->fromPost();
     $form = new Form\UploadForm();
     $form->bind($postData);
     $itemModel = Api::_()->getModel('File\\Model\\File');
     if ($form->isValid() && $form->getFileTransfer()->isUploaded()) {
         if ($form->getFileTransfer()->receive()) {
             $files = $form->getFileTransfer()->getFileInfo();
             $itemModel->setUploadFiles($files);
             $itemModel->setConfigKey('default')->createFiles();
             $lastFileId = $itemModel->getLastFileId();
             if ($lastFileId) {
                 $this->flashMessenger()->addMessage('file-upload-succeed');
                 $this->redirect()->toUrl('/admin/file/' . $lastFileId);
             }
         }
     } else {
         //p($form->getFileTransfer()->getMessages());
         //p($form->getFileTransfer()->isUploaded());
         //p($form->getMessages());
         $flashMesseger = array('file-upload-failed');
     }
     return array('form' => $form, 'item' => $postData);
 }