public function uploadAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $db = new Fotos(); $album_id = $this->_request->getPost('album_id'); $db->setAlbumId($album_id); $adapter = new Zend_File_Transfer_Adapter_Http(); $adapter->setDestination(APPLICATION_PATH . '/../data/temp'); $upload = new Zend_File_Transfer(); $files = $upload->getFileInfo(); if (!file_exists(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id)) { mkdir(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id, 0777, true); } foreach ($files as $file => $info) { if ($upload->isUploaded($file)) { $extension = substr($info['name'], strrpos($info['name'], '.') + 1); $filename = 'photo_' . time() . '.' . $extension; $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true)); $adapter->receive($info['name']); if (!$adapter->receive()) { $messages = $adapter->getMessages(); echo implode("\n", $messages); exit; } //setFileName::Url $db->setUrl($filename); //setCapa::false (0) $db->setCapa(0); $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename); //resized $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'r_' . $filename, 80); //full //$imanee->resize(1024, 768) // ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80); //thumbnail $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 't_' . $filename, 60); unlink(APPLICATION_PATH . '/../data/temp/' . $filename); $data = array('url' => $db->getUrl(), 'album_id' => $db->getAlbumId(), 'capa' => $db->getCapa()); $foto_id = $db->saveFoto($data); $data['foto_id'] = $foto_id; echo json_encode($data); } } }
public function atualizarAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $slug = new My_Slugifier(); $slug->setTransliterate(true); #Remover também caractéres Latin (ex.: á, ü, ç) if ($this->_request->isPost()) { $tipo = $this->_request->getPost('tipo'); $material_id = $this->_request->getPost('material_id'); if ($tipo == 'imagem') { $imagem = $this->_request->getPost('imagem'); //localização que imagem será salva (temp) $imageName = 'material_' . time() . '.jpg'; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $imageName; //remove criptografia e especificações da string de imagem $base64 = base64_decode(preg_replace('#^data:image/[^;]+;base64,#', '', $imagem)); //criar imagem $source = imagecreatefromstring($base64); //salvar imagem temporária imagejpeg($source, $url, 70); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem', 0777, true); } //redimensiona a imagem mantendo a proporção e armazena nos diretórios corretos. $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $imageName); //full $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 'r_' . $imageName, 80); //thumbnail $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 't_' . $imageName, 60); //apaga imagem temporária unlink(APPLICATION_PATH . '/../data/temp/' . $imageName); #TODO: Remover a imagem atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com a nova imagem. } elseif ($tipo == 'audio') { $audio = $this->_request->getPost('audio'); //armazenando a string do arquivo na variável $base64 $base64 = base64_decode(preg_replace('#^data:audio/[^;]+;base64,#', '', $audio)); //obtendo formato do arquivo ($extension) base64_decode(preg_match('/audio\\/[^;]+;/', $audio, $decoded)); $ext = str_replace(array('audio/', ';'), array(''), $decoded); $extension = '.' . $ext[0]; //localização que o áudio será salvo (temp) $audioName = 'material_' . time() . $extension; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $audioName; file_put_contents($url, $base64); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio', 0777, true); } //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário) rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio' . DS . $audioName); #TODO: Remover o audio atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com o novo audio. } elseif ($tipo == 'arquivo') { //Dados de Exemplo (obter os mesmos do registro real #db) $titulo = 'Material de Aula - Dançando Macarena Style no passinho do Romano'; //Dados de Exemplo :: FIM $arquivo = $this->_request->getPost('arquivo'); $formato = $this->_request->getPost('formato'); //armazenando a string do arquivo na variável $base64 $base64 = base64_decode(preg_replace('#^data:([^;]*)+;base64,#', '', $arquivo)); //localização que o áudio será salvo (temp) $arquivoName = 'material_' . time() . '.' . $formato; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $arquivoName; file_put_contents($url, $base64); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo', 0777, true); } //gera nome do arquivo baseado no título do material $newName = $slug->slugify($titulo) . '.' . $formato; //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário) rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo' . DS . $newName); #TODO: Remover o arquivo atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com o novo arquivo. } elseif ($tipo == 'video') { $video = $this->_request->getPost('video'); var_dump($_POST); } } }