Bem vamos lá... @RafaelViana vlw pela dica, ainda não refatorei ..estou só testando mais quando for refatorar vou lembrar da sua dica ;)
@J.C.Kodel o que vc está me dizendo é justamente o erro, principalmente na frase "application/octet é o binário genérico que sempre vai realizar download do arquivo. " e mesmo que eu faça response.getContentType("application/ msword") por exemplo armazena no banco o "application/octet-stream" quando tento abrir no word ou odt algumas coisa são legiveis, tipo: ------------Ef1cH2cH2GI3Ef1gL6Ij5ei4gL6GI3 Content-Disposition: form-data; name="Filename" TextFlow.doc ------------Ef1cH2cH2GI3Ef1gL6Ij5ei4gL6GI3 Content-Disposition: form-data; name="Filedata"; filename="TextFlow.doc" Content-Type: application/octet-stream depois binaários e no final ------------Ef1cH2cH2GI3Ef1gL6Ij5ei4gL6GI3 Content-Disposition: form-data; name="Upload" Submit Query ------------Ef1cH2cH2GI3Ef1gL6Ij5ei4gL6GI3-- ou seja, no banco quando mando salvar os byte[] é isso que armazena... como falei e vc também "PDF no plug-in do navegador" funciona e tal... e como sempre o detalhe custa dia, vida e programador não é fácil... tem vezes que estressa :@ de qualquer forma galera vlw pela força, só tem fera nessa lista :) me ajudando muito. Cumps. On 2 dez, 18:51, J.C.Ködel <jcko...@gmail.com> wrote: > O MIME type é inútil, caso queira apenas se fazer download de um arquivo. > application/octet é o binário genérico que sempre vai realizar download do > arquivo. > Para o nome do arquivo há outro header (content file name eu creio). > > Se estiverem usando o recurso de mostrar o PDF no plug-in do navegador, aí > desconsiderem o que eu disse. > > -------------------------------------------------- > From: "RafaelViana" <rfl.vi...@gmail.com> > Sent: Wednesday, December 02, 2009 6:21 PM > To: "flexdev" <flexdev@googlegroups.com> > Subject: [flexdev] Re: Arquivos blob, sugestão!? > > > > > > > Uma opinião > > > porque em vez de salvar no banco você não salva o mime type?? > > > Esse código ta repetindo várias linhas só para diferenciar o content > > type: > > > if (objetoBanco.getTipoArquivo().equals(".pdf")) { > >> if (bytes != null && bytes.length > 0) { > > >> response.setContentType("application/pdf"); //única coisa diferente > > >> response.setContentLength(bytes.length); //linha repetida em todos ifs > >> ServletOutputStream ouputStream = > >> response > > >> .getOutputStream(); //linha repetida em todos ifs > >> ouputStream.write(bytes, 0, > >> bytes.length); //linha repetida em todos ifs > >> ouputStream.flush(); //linha > >> repetida em todos ifs > >> ouputStream.close(); //linha > >> repetida em todos ifs > >> } > >> } > > > não seria mais bonito e prático assim? imagina ter 20 tipos de > > arquivos diferentes?? > > > if (bytes != null && bytes.length > 0) { > > response.setContentType > > (objetoBanco.getContentType()); > > response.setContentLength > > (bytes.length); > > ServletOutputStream > > ouputStream = response > > > .getOutputStream(); > > ouputStream.write(bytes, 0, > > bytes.length); > > ouputStream.flush(); > > ouputStream.close(); > > } > > > O que eu faço é na hora de salvar o objeto é verificar a extensão para > > salvar o mime type correspondente: > > > Eu tenho uma função, para selecionar o tipo correto (se quiser pode > > colocar os tipos que você acha mais comum): > > > private function selectContentType(extension:String):String{ > > > var contentType:String; > > > switch(extension){ > > case ".doc" : contentType = "application/msword"; > > break; > > case ".docx" : contentType = "application/vnd.openxmlformats- > > officedocument.wordprocessingml.document"; > > break; > > case ".gif" : contentType = "image/gif"; > > break; > > case ".jpeg" : contentType = "image/jpeg"; > > break; > > case ".jpg" : contentType = "image/jpeg"; > > break; > > case ".pdf" : contentType = "application/pdf"; > > break; > > case ".png" : contentType = "image/png"; > > break; > > case ".ppt" : contentType = "application/mspowerpoint"; > > break; > > case ".rar" : contentType = "application/x-rar-compressed"; > > break; > > case ".rtf" : contentType = "text/rtf"; > > break; > > case ".txt" : contentType = "text/plain"; > > break; > > case ".xls" : contentType = "application/vnd.ms-excel"; > > break; > > case ".zip" : contentType = "application/zip"; > > break; > > } > > > return contentType; > > } > > > Aqui tem uma lista (quando fiz usei outra, mas aqui tem bastante > > também): > >http://webdesign.about.com/od/multimedia/l/bl_mime_types_by_cnt_type.htm > > > On 2 dez, 15:25, Janderson <janderson...@hotmail.com> wrote: > >> hehe, muito obrigado Everton, fiz exatamente isso e funcionou show... > >> já tinha usado o contentType para saída dos relatórios e nem me liguei > >> outra vez de usá-los neste momento também... fiz os teste aqui e > >> funcionou legal, mas...rs com pdf vai tranquilo já com word e > >> openOffice uma berração, e os contentType estão certos, olha só: > > >> byte[] bytes = objetoBanco.getArquivo(); //meu byte[] que veio do > >> banco > > >> if (objetoBanco.getTipoArquivo().equals(".pdf")) > >> { > >> if (bytes != null && bytes.length > 0) { > > >> response.setContentType("application/pdf"); > > >> response.setContentLength(bytes.length); > >> ServletOutputStream ouputStream = > >> response > > >> .getOutputStream(); > >> ouputStream.write(bytes, 0, > >> bytes.length); > >> ouputStream.flush(); > >> ouputStream.close(); > >> } > >> } > >> if (objetoBanco.getTipoArquivo().equals(".doc")) > >> { > >> if (bytes != null && bytes.length > 0) { > > >> response.setContentType("application/msword"); > > >> response.setContentLength(bytes.length); > >> ServletOutputStream ouputStream = > >> response > > >> .getOutputStream(); > >> ouputStream.write(bytes, 0, > >> bytes.length); > >> ouputStream.flush(); > >> ouputStream.close(); > >> } > >> } > >> if (objetoBanco.getTipoArquivo().equals(".odt")) > >> { > >> if (bytes != null && bytes.length > 0) { > >> response > > >> .setContentType("application/vnd.oasis.opendocument.text"); > > >> response.setContentLength(bytes.length); > >> ServletOutputStream ouputStream = > >> response > > >> .getOutputStream(); > >> ouputStream.write(bytes); > >> ouputStream.flush(); > >> ouputStream.close(); > >> } > >> } > > >> bizarro isso... pelo que entendi quando armazeno os array de bytes > >> (blob) no banco é armazenado até os cabeçalhos e tal, o pdf para > >> entender que é um cabeçallho e ignora já os outros dois nada... mostra > >> o binário mesmo.... mas enfim..chegando perto do fim disso, vlw mais > >> uma vez Everton..foi de grande ajuda ;) > > >> Cumps. > > >> On 2 dez, 13:25, Everton Rivas <evertonri...@gmail.com> wrote: > > >> > Já que você consegue gerar o arquivo, manda esta saída para o content > >> > type > >> > indicando qual o tipo de arquivo (já gravado no banco de dados) e o > >> > navegador se encarrega de abrir ou realizar o download do arquivo > >> > ;)http://java.sun.com/products/servlet/2.1/api/javax.servlet.ServletRes... > >> > <http://java.sun.com/products/servlet/2.1/api/javax.servlet.ServletRes...>http://faq.javaranch.com/java/JspAndExcel > >> > <http://faq.javaranch.com/java/JspAndExcel>Esta é uma opção bacana, > >> > pois > >> > pode forçar o navegador à realizar o download ou fazer com que abra > >> > diretamente no browser. Não haverá necessidade de utilizar o seu > >> > fileReference, mas se quiser uma dica coloque um grid para que o > >> > usuário > >> > selecione os arquivos que irá baixar e mande todos compactados em zip > >> > se > >> > houver mais do que 1. Para um único arquivo apenas o link de download > >> > chamando sua página jsp que montará o arquivo e enviará a saída para o > >> > content-type. > > >> > 2009/12/2 Janderson <janderson...@hotmail.com> > > >> > > bem..como disse o arquivo funcionou que uma beleza, a questão é a > >> > > continuação..pense comigo.. > > >> > > tenho um arquivo blob(byte[]) que vem do banco, certo, que que eu > >> > > pensei, pegar esse byte[] transformar em inputStream e abrir ou no > >> > > word, ou pdf, ou openOffice de acordo com a extensão do arquivo, até > >> > > ok mas... o sistema roda modelo client server ... então se eu mandar > >> > > no java um getRuntime.exec... vai abrir no server e não no client, > >> > > entendeu!? > > >> > > alguma sugestão... a inicio vou ter que pegar o blog..gerar um > >> > > arquivo > >> > > no server e fazer download atraves do FileReference no flex, que > >> > > porre :( alguma idéia de como melhorar isso ? vlw galera > > >> > > Cumps. > > >> > > On 1 dez, 10:37, Janderson <janderson...@hotmail.com> wrote: > >> > > > claro, agora faz todo sentido :) como não pensei nisso antes, tem > >> > > > dia > >> > > > que nem o café ajuda o sujeito a se concentrar :) > > >> > > > funcionou perfeito galera, só para registrar, não usei o stream e > >> > > > sim > >> > > > o byte[] indicado pelo Mário Júnior, vlw :) > > >> > > > Cumps. > > >> > > > On 1 dez, 10:32, Mário Júnior <juninho...@gmail.com> wrote: > > >> > > > > é só persistir o byte[] no seu bd (q será um campo blob) e pronto > >> > > > > =D > > >> > > > > []s > > >> > > > > 2009/12/1 Janderson <janderson...@hotmail.com> > > >> > > > > > hummm, vlw..entendi Marcel, no caso pego o stream e salvo no > >> > > > > > banco, > >> > > > > > além disso acho que vou colocar um campo para saber o tipo de > >> > > > > > documento, .doc, .pdf para depois abrir esses arquivos, acho > >> > > > > > que isso > >> > > > > > é o suficiente para o que eu queria, vou testar aqui agora... > >> > > obrigado > > >> > > > > > On 1 dez, 10:22, Marcel Araujo <ceceld...@gmail.com> wrote: > >> > > > > > > Não tem nada de diferente quanto a salva no ftp, apenas no > >> > > > > > > teu > >> > > modelo de > >> > > > > > > negócios ao invés de mover o arquivo do diretório temporário > >> > > > > > > ou do > >> > > stream > >> > > > > > > para a pasta destino, deverás ler o conteúdo do arquivo > >> > > > > > > temporário > >> > > e > >> > > > > > salvar > >> > > > > > > no banco. > > >> > > > > > > Claro, tudo dentro de umas validações de segunrança básicas. > > >> > > > > > > 2009/12/1 Janderson <janderson...@hotmail.com> > > ... > > mais » > > smime.p7s > 6KExibirDownload --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---