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>"; } } }
/** * 檔案上傳 * @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; }