Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Olá colegas.
Eu precisei gravar uma imagem dentro de um campo blob, mas não encontrei exemplo de como fazer isso no adianti.
Segue a forma como resolvi.
Na classe active Record tive que fazer o seguinte:
Segue a forma como resolvi. Talvez não seja a melhor forma, mas pelo menos resolveu meu problema.
Caso algum colega saiba de uma melhor forma de resolver o problema, por gentileza coloque aqui.
A ideia é sempre usar um arquivo de imagem, antes de gravar no banco, ou até mesmo antes de renderizar na tela.
Esse arquivo fica numa pasta temporaria, e será apagado depois de certo tempo.
O unico incoveniente é que, toda vez que o registro é editado, um novo arquivo temporario é criado. Logo, a pasta "tmp" vai enchendo. Por isso que eu preciso apagar os arquivos temporarios. Se alguem tiver uma ideia melhor, posta aqui.
Na classe active Record tive que fazer o seguinte: Criei um campo virtual "imagem" que irá receber o caminho do arquivo temporario através de um metodo magico.
<?php
class MinhaClasse extends TRecord
?>
Na classe TPage de edição, onde a imagem será mostrada, eu resolvi usar um TImageCropper para pegar o campo virtual e mostrar na tela. Caso o usuario deseje selecionar outra imagem para ser gravada no banco, esse mesmo campo será usado para armazenar o local onde a imagem foi gravada.
<?php
class MinhaClasseForm extends TPage
parent::__construct();
...
...
// Aqui estou pegando informacao daquele metodo magico get_imagem
$img_brasao = new TImageCropper('imagem');
$img_brasao->setAllowedExtensions( [ 'png', 'jpg', 'jpeg'] );
$img_brasao->setSize(100, 200);
$nm = json_decode(urldecode($data->imagem));
$file = getcwd().'/tmp/'. basename( $nm->fileName );
$img = file_get_contents($file);
$object->imgcampo_brasao blob_do_banco= $img;
$object->store();