Muito obrigado a todos pela atenção e a vc Leonardo Oliveira.. agora
tenho uma luz para seguir, vou estudar se código para resolver meu
problema que é assim, eu gero um QR Code... e nesse QR Code tem um
código... então quero salvar essa imagem gerada no banco de dados...
por que depois para gerar relatórios é pelo código que está na imagem
gravada no banco eu vou listar o resto das informações num grid.
Desculpem se fui sucinto na minha primeira explicação.

Obrigado.

On Dec 26, 1:43 pm, Leonardo Oliveira <[email protected]>
wrote:
> Pessoal, na boa, o cara quer saber como gravar Imagem no banco. E se
> ele estiver desenvolvendo um aplicativo pra gravar imagens de arquivos
> de processos penais? E se o chefe dele acha mais seguro deixar as
> imagens no banco? Bom Daniel, então vou dar pra vc um exemplo que uso
> aquí e que resolve. vou colar trechos do cód e vc mastiga aí.
>
> primeiro vc precisa usar um FileReference:
> private var arquivoUpload:FileReference = new FileReference();
>
> depois vc faz um handler pro seu botão e pros eventos que vc precisa
> tratar, se quiser faça um filtro:
> private function handleBtnBuscarImagem(evt:MouseEvent):void {
>         var filtroExts:FileFilter = new FileFilter(".::SaibWeb::. (" +
>                 "*.gif, *.jpg, *.jpeg, *.png)",
>                 "*.gif;*.jpg;*.jpeg;*.png");
>         arquivoUpload.addEventListener(Event.SELECT, onUpFileSelected);
>         arquivoUpload.addEventListener(Event.CANCEL, onUpCancel);
>         arquivoUpload.addEventListener(IOErrorEvent.IO_ERROR, onUpIOError);
>         arquivoUpload.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
> onUpSecurityError);
>         arquivoUpload.browse([filtroExts]);
>
> }
>
> private function onUpFileSelected(evt:Event):void{
>         cmpCanvasUpload.alpha = 0.9;
>         _cnvImagens.addChild(cmpCanvasUpload);
>         if((arquivoUpload.size/1024) <= (10240)){//limite máximo: 10Mb
>                 try {
>                         cmpCanvasUpload.addChild(msgUpload);
>                         cmpCanvasUpload.addChild(progressBar);
>                         cmpCanvasUpload.addChild(btnCancelUpload);
>                         arquivoUpload.addEventListener(ProgressEvent.PROGRESS,
> onUpProgress);
>                         arquivoUpload.addEventListener(Event.COMPLETE, 
> onUpComplete);
>                         var params:URLVariables = new URLVariables();
>                         params.appOrigem = "FrmCadProdutos";
>                         params.idEmpresaPvda = idEmpresaPvda;
>                         params.flgImgDefault = "N";
>                         params.idProduto = objeto.Codigo;
>                         var request:URLRequest = new URLRequest();
>                         request.url = FILE_UPLOAD_URL;
>                         request.method = URLRequestMethod.POST;
>                         request.data = params;
>                         arquivoUpload.upload(request);
>                 } catch (err:Error) {
>                         msgUpload.text = "ERRO: zero-byte file";
>                         cmpCanvasUpload.addChild(msgUpload);
>                 }
>         }
>         else{
>                 arquivoUpload.cancel();
>                 btnCancelUpload.enabled = false;
>                 _cnvImagens.removeChild(cmpCanvasUpload);
>                 Funcoes.mensagem("O arquivo selecionado excede o tamanho 
> máximo
> permitido de 10Mb.", "E", null);
>         }
>
> }
>
> e pra facilitar minha vida, vou só colocar trechos e vc vê aí.
>
>                 private function onUpProgress(evt:ProgressEvent):void{
>                         var nf:NumberFormatter = new NumberFormatter();
>                         nf.rounding = "up";
>                         nf.precision = 0;
>                         nf.useThousandsSeparator = false;
>                         msgUpload.text = "Carregando 
> "+nf.format(evt.bytesLoaded/1024)+" de
> "+nf.format(evt.bytesTotal/1024)+" Kb.";
>                         progressBar.setProgress(evt.bytesLoaded, 
> evt.bytesTotal);
>                 }
>
>                 private function onUpCancel(evt:Event):void{
>                         arquivoUpload.cancel();
>                         msgUpload.text = "Upload cancelado pelo usuário.";
>                         progressBar.label = "Cancelado";
>                         btnCancelUpload.enabled = false;
>                         var timer:Timer = new Timer(1000);
>                         timer.addEventListener(TimerEvent.TIMER,
> function(e:TimerEvent):void{
>                                 try{
>                                         
> _cnvImagens.removeChild(cmpCanvasUpload);
>                                 }
>                                 catch(e:Error){}
>                                 timer.stop();
>                         });
>                         timer.start();
>                 }
>
>                 private function onUpComplete(evt:Event):void{
>                         var nf:NumberFormatter = new NumberFormatter();
>                         nf.rounding = "up";
>                         nf.precision = 0;
>                         nf.useThousandsSeparator = false;
>                         msgUpload.text = "Upload concluído em um total de
> "+nf.format(arquivoUpload.size/1024)+"Kb.";
>                         progressBar.label = "Concluído";
>                         btnCancelUpload.enabled = false;
>                         var timer:Timer = new Timer(3500);
>                         timer.addEventListener(TimerEvent.TIMER,
> function(e:TimerEvent):void{
>                                 try{
>                                         
> _cnvImagens.removeChild(cmpCanvasUpload);
>                                 }
>                                 catch(e:Error){}
>                                 timer.stop();
>                         });
>                         timer.start();
>                         getProdutoImagens();
>                 }
>
>                 private function onUpIOError(evt:IOErrorEvent):void{
>                         Funcoes.mensagem("IOError ~= line 
> 1226\n"+evt.toString(), "E",
> null);
>                         _cnvImagens.removeChild(cmpCanvasUpload);
>                         cmpCanvasUpload.removeChild(msgUpload);
>                         cmpCanvasUpload.removeChild(progressBar);
>                 }
>
>                 private function 
> onUpSecurityError(evt:SecurityErrorEvent):void{
>                         Funcoes.mensagem("SecurityError ~= line 
> 1233\n"+evt.text, "E",
> null);
>                         _cnvImagens.removeChild(cmpCanvasUpload);
>                         cmpCanvasUpload.removeChild(msgUpload);
>                         cmpCanvasUpload.removeChild(progressBar);
>                 }
>
> a sua url no servidor
> private const FILE_UPLOAD_URL:String = "http://seu_ip:sua_porta/
> uploadDocumentos.ashx";
>
> enfim tudo isso provavelmente vc já sabe. agora, o tratamento no
> servidor, obviamente, depende sa sua linguagem aí. aquí utilizo C#
> dessa forma:
>         public void UploadImagemProdutos(HttpContext context)
>         {
>             OracleCommand comandosql = new OracleCommand();
>
>             //recupera os dados do post
>             string idEmpresaPvda =
> context.Request.Form["idEmpresaPvda"].ToString();
>             string idProduto =
> context.Request.Form["idProduto"].ToString();
>             HttpPostedFile imagem = context.Request.Files["Filedata"];
>
>             //configura o diretório de upload temporário
>             string uploadDir = HttpContext.Current.Server.MapPath("~/
> upload/temp/" + idEmpresaPvda);
>
>             //cria o titetório temporário, caso não exista
>             try { System.IO.Directory.CreateDirectory(uploadDir); }
>             catch (Exception) { throw; }
>
>             //grava na pasta temporária
>             try { imagem.SaveAs(Path.Combine(uploadDir,
> imagem.FileName)); }
>             catch (Exception) { throw; }
>
>             //redimensiona a imagem se necessário
>             //(substituindo a imagem criada acima. tamanho padronizado
> no parâmetro da função)
>             try { redimensionarImagem(Path.Combine(uploadDir,
> imagem.FileName), Path.Combine(uploadDir, imagem.FileName)); }
>             catch (Exception) { throw; }
>
>             using (comandosql.Connection = ConexaoBD.ObterConexao())
>             {
>                 try
>                 {
>                     FileStream fsImagem = new FileStream(uploadDir +
> "/" + imagem.FileName, FileMode.Open, FileAccess.Read);
>                     byte[] blob = new byte[fsImagem.Length];
>                     fsImagem.Read(blob, 0,
> System.Convert.ToInt32(fsImagem.Length));
>                     fsImagem.Close();
>                     comandosql.CommandText = "INSERT INTO
> PVDA.PRODUTO_IMAGENS(PROIMG_PROD_EMP_ID " +
>
> ",PROIMG_PROD_ID " +
>
> ",PROIMG_IMAGEM) " +
>
> "VALUES (" + idEmpresaPvda +
>
> "," + idProduto +
>
> ", :BlobImagem)";
>                     OracleParameter blobParameter = new
> OracleParameter();
>                     blobParameter.OracleDbType = OracleDbType.Blob;
>                     blobParameter.ParameterName = "BlobImagem";
>                     blobParameter.Value = blob;
>                     comandosql.Parameters.Add(blobParameter);
>                     comandosql.CommandType = CommandType.Text;
>                     comandosql.ExecuteNonQuery();
>                     File.Delete(Path.Combine(uploadDir,
> imagem.FileName));// deleta o arquivo temporário
>                 }
>                 catch (Exception)
>                 {
>                     throw;
>                 }
>             }
>         }
>
>         public static void redimensionarImagem(string srcPath, string
> destPath, double nWidth = 235, double nHeight = 145){
>             string temp;
>             // abre arquivo original
>             System.Drawing.Image img =
> System.Drawing.Image.FromFile(srcPath);
>             int oWidth = img.Width; // largura original
>             int oHeight = img.Height; // altura original
>             double ratio;
>
>             //calcula a proporcionalidade da imagem
>             if(oWidth > oHeight){
>                 ratio = nWidth / oWidth;
>                 nHeight = oHeight * ratio;
>             } else {
>                 ratio = nHeight / oHeight;
>                 nWidth = oWidth * ratio;
>             }
>
>             // redimensiona se necessario
>             if(oWidth > nWidth || oHeight > nHeight){
>                 if(oWidth > oHeight){ nHeight = (oHeight * nWidth) /
> oWidth; }
>                 else{ nWidth = (oWidth * nHeight) / oHeight; }
>             }
>             else return;
>
>             // substitui a imagem no servidor pela imagem
> redimensionada...
>             System.Drawing.Image imgThumb =
> img.GetThumbnailImage(Convert.ToInt32(nWidth),
> Convert.ToInt32(nHeight), null, new System.IntPtr(0));
>             if(srcPath == destPath){
>                 temp = destPath + ".tmp";
>                 imgThumb.Save(temp, ImageFormat.Jpeg);
>                 img.Dispose();
>                 imgThumb.Dispose();
>                 File.Delete(srcPath); // deleta arquivo original
>                 File.Copy(temp, srcPath); // copia a nova imagem
>                 File.Delete(temp); // deleta temporário
>             }
>             else{
>                 imgThumb.Save(destPath, ImageFormat.Jpeg); // salva
> nova imagem no destino
>                 imgThumb.Dispose(); // libera memoria
>                 img.Dispose(); // libera memória
>             }
>         }
>
> como vê, o campo no banco é um blob. não repara na falta de
> explicação, é que tenho que correr. o código está bem comentado.

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a