예제 #1
0
 public function index02Action()
 {
     if ($this->request->isPost()) {
         $upload = new \Zend\File\Transfer\Adapter\Http();
         $upload->addValidator("Extension", false, array("png", "jpg"), "image");
         $upload->addValidator("Size", true, array("min" => "100KB", "max" => "1MB"), "zip");
         if ($upload->isValid()) {
             $upload->setDestination(FILES_PATH . "images", "image");
             $upload->setDestination(FILES_PATH . "zip", "zip");
             $upload->receive();
         } else {
             $message = $upload->getMessages();
             echo "<pre style='font-weight:bold'>";
             print_r($message);
             echo "</pre>";
         }
     }
 }
예제 #2
0
 /**
  * 檔案上傳
  * @param $data
  * @param $pageRes \Base\Entity\Page
  * @return JsonModel
  */
 public function saveFile($data, $pageRes)
 {
     $jsonModel = new JsonModel();
     $em = $this->getEntityManager();
     $form = new PageFileForm();
     $form->bind($pageRes);
     $form->setData($data);
     if ($form->isValid()) {
         $adapter = new \Zend\File\Transfer\Adapter\Http();
         if (!$adapter->isUploaded() and !isset($data['updateId'])) {
             // 排除修改狀態
             $jsonModel->setVariable('success', false);
             $jsonModel->setVariable('message', array('upload_file[]' => array('no_file', '沒有上傳檔案')));
             return $jsonModel;
         }
         $em->persist($pageRes);
         $em->flush();
         // 檔案部份
         $tempId = sprintf("%02x", rand(1000, 2000));
         $len = (int) strlen($tempId) / 2;
         $path = '';
         for ($i = 0; $i < $len - 1; $i++) {
             $path .= substr($tempId, $i * 2, 2) . '/';
         }
         $filePath = $this->FileStorePath('cms/' . $path);
         $config = $this->getServiceLocator()->get('config');
         $adapter->addValidator('Extension', false, $config['upload']['allow_type']);
         $i = 1;
         foreach ($adapter->getFileInfo() as $media) {
             $ext = $this->_findexts($media['name']);
             $ss = 'p' . $i . '-' . time();
             $fileName = $ss . '.' . $ext;
             $adapter->addFilter('Rename', array('source' => $media['tmp_name'], 'target' => $filePath . $fileName, 'overwrite' => true));
             if (!$adapter->receive($media['name'])) {
                 $jsonModel->setVariable('success', false);
                 $jsonModel->setVariable('message', $adapter->getMessages());
                 return $jsonModel;
             } else {
                 $pageFile = new \Base\Entity\PageFile();
                 $pageFile->setPage($pageRes);
                 $pageFile->setFileExt($ext);
                 $pageFile->setFileName($path . $fileName);
                 $pageFile->setFileSize($media['size']);
                 $pageFile->setSourceName($media['name']);
                 $em->persist($pageFile);
             }
             $i++;
         }
         $em->flush();
         $jsonModel->setVariable('success', true);
     } else {
         $jsonModel->setVariable('success', false);
         $jsonModel->setVariable('message', $form->getMessages());
     }
     // tags
     if ($data['tags']) {
         $this->setTags($data, $pageRes);
     }
     return $jsonModel;
 }