Upload de Imagens no Zend

Zend_Controller, Zend_Controller_Action, Zend_Controller_Dispatcher, Zend_Controller_Plugin, Zend_Controller_RewriteRouter, Zend_View, Zend_Http_Request, Zend_Http_Response

Moderador: chackal_sjc

Upload de Imagens no Zend

Mensagempor scheila » Dom Out 18, 2009 6:13 pm

Olá pessoal!!

Tem algum componente no Zend que ajuda a fazer upload de imagens???

Se tiver, como faço???

Abraço.
scheila
Membro
 
Mensagens: 24
Data de registro: Seg Set 07, 2009 4:23 pm

Re: Upload de Imagens no Zend

Mensagempor scheila » Seg Out 19, 2009 7:52 pm

Olá Pessoal..
Achei o seguinte código para fazer upload:

Código: Selecionar tudo
$imagemNoticia = new Zend_File_Transfer_Adapter_Http();
      $imagemNoticia->setDestination('C:\teste');

      if (!$imagemNoticia->receive()) {
    $messages = $imagemNoticia->getMessages();
    echo implode("\n", $messages);
}

Mas, seguinte...

No meu HTML tenho o seguinte:

Código: Selecionar tudo
<label for="insertImagem">Inserir Imagem:</label><br/><br/>

  <input type="file" name="imagemNoticia" value="10000" id="imagemNoticia" size="18px"/>


e no meu form do arquivo assim:

Código: Selecionar tudo
<form action="/ZF/administrador/inserirnoticia" method="post" class="cmxform"  id="noticia" enctype="multipart/form-data">


Creio que até aí beleza...

Mas quando vou salvar no banco...pego via post minha imagem...

Código: Selecionar tudo
$imagemNoticia = $post->imagemNoticia;


crio um array e insert no banco...

Mas isso me gera o seguinte erro:

Catchable fatal error: Object of class Zend_File_Transfer_Adapter_Http could not be converted to string in C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Statement\Pdo.php on line 232


Alguém pode me dar um help??

Abraço
scheila
Membro
 
Mensagens: 24
Data de registro: Seg Set 07, 2009 4:23 pm

Re: Upload de Imagens no Zend

Mensagempor vdsantos » Ter Out 20, 2009 9:44 am

Olá scheila,

Veja, quando você usa o Zend_File_Transfer_Adapter alguns métodos ficam disponíveis para você poder pegar a informação do arquivo que foi feito o upload, como por exemplo o getFileName(). Todos esses métodos são como se você estivesse usando a suberglobal $_FILES do PHP.

A sintaxe seria mais ou menos assim:
Código: Selecionar tudo
$adapter->getFileName('nome_do_obj_file_do_html');


De uma olhada na documentação do site da Zend (se ainda não pensou em buscar por la) que deve lhe ajudar bastante a resolver esse problema ok?!

Abcs
vdsantos
Participante
 
Mensagens: 51
Data de registro: Seg Jun 08, 2009 2:38 pm
Localização: Guarulhos - SP

Re: Upload de Imagens no Zend

Mensagempor scheila » Qua Out 21, 2009 8:24 pm

Olá....mais ainda me retorna esse erro...

Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'imagemNoticia' cannot be null' in C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Statement\Pdo.php:238 Stack trace: #0 C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array) #1 C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Adapter\Abstract.php(433): Zend_Db_Statement->execute(Array) #2 C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Adapter\Pdo\Abstract.php(230): Zend_Db_Adapter_Abstract->query('INSERT INTO `No...', Array) #3 C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Adapter\Abstract.php(511): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `No...', Array) #4 C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Table\Abstract.php(924): Zend_Db_Adapter_Abstract->insert('Noticia', Array) #5 C:\Arquivos de programas\VertrigoServ\www\ZF\application\models\no in C:\Arquivos de programas\VertrigoServ\www\ZF\library\Zend\Db\Statement\Pdo.php on line 238


Diz que a coluna de imagem está vazia...

eu fiz assim daí...

Código: Selecionar tudo
$post = Zend_Registry :: get('post');
$imagemNoticia = $post->imagemNoticia;
   $modelo = new Noticia();

$adapter = new Zend_File_Transfer_Adapter_Http();
      $adapter->setDestination('C:\teste');

      if (!$adapter->receive()) {
         $messages = $adapter->getMessages();
         echo implode("\n", $messages);
      }
      $adapter->getFileName($imagemNoticia);
$modelo->inserirNoticia($imagemNoticia);//chamo método de inserção



e o meu método de inserir...

Código: Selecionar tudo
public function inserirNoticia($imagemNoticia) {

      $dados = array (
               'imagemNoticia' => $imagemNoticia


      );
      $table = new Noticia();
      $table->insert($dados);

   }



oq será que está havendo de errando????


abraço
scheila
Membro
 
Mensagens: 24
Data de registro: Seg Set 07, 2009 4:23 pm

Re: Upload de Imagens no Zend

Mensagempor vdsantos » Qui Out 22, 2009 8:57 am

Olá,

Acredito que o seu problema seja na forma de receber o conteúdo do objeto file.

Tente dessa forma:

Código: Selecionar tudo
//$post = Zend_Registry :: get('post');
$modelo = new Noticia();

$adapter = new Zend_File_Transfer_Adapter_Http();
$adapter->setDestination('C:\teste');

if (!$adapter->receive()) {
    $messages = $adapter->getMessages();
    echo implode("\n", $messages);
}else{
   $imagemNoticia = $adapter->getFileName('imagemNoticia'); // pegando o nome do arquivo de acordo com o objeto imagemNoticia do form HTML.
   $modelo->inserirNoticia($imagemNoticia);//chamo método de inserção
}


Veja que eu comentei o trecho de POST e modifiquei a variável $imagemNoticia do topo do código para receber o nome do arquivo só depois da instancia da variável $adapter ref. a classe Zend_File. De uma olhada na documentação da Zend que tem um exemplo bem simples de upload e também sobre o uso de todos os métodos referentes ao Zend_File_Transfer.

Espero poder ter ajudado.
Abcs
vdsantos
Participante
 
Mensagens: 51
Data de registro: Seg Jun 08, 2009 2:38 pm
Localização: Guarulhos - SP

Re: Upload de Imagens no Zend

Mensagempor scheila » Qui Out 22, 2009 7:33 pm

Opaaaa Caraaa...Funcionouuuuu..Vlw

Fiz assim...
Código: Selecionar tudo
       $teste = $adapter->getFileName($_FILES['imagem']['name']);


Beleza...
Mas tenho outra dúvida aqui...rsrsrs
Como faço pra apegar essa string do banco??

Fiz assim...

Código: Selecionar tudo
<?php
$imagem = new Noticia();
$up=$imagem->fetchAll();
foreach ($up as  $imagem){
   ?><td>
   <?php
echo "$imagem->imagemNoticia";
}?>


Só que me retornou o nome da string....
C:\teste\cachorro.jpg

Pode me dar mais um help???Pra retornar a imagem mesmo??

abraço
scheila
Membro
 
Mensagens: 24
Data de registro: Seg Set 07, 2009 4:23 pm

Re: Upload de Imagens no Zend

Mensagempor vdsantos » Qui Out 22, 2009 9:59 pm

OLá novamente,
te mandei uma MP sobre o assunto, mas, contudo, da uma olhadinha nessa URL, tavlez te ajude com algo:

http://e-fabrica.com/blog/2009/09/19/classe-upload-php/

Abcs
vdsantos
Participante
 
Mensagens: 51
Data de registro: Seg Jun 08, 2009 2:38 pm
Localização: Guarulhos - SP


Retornar para Model-View-Controller (MVC)

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante

cron