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> > > > > > > > > > bom dia, é o seguinte... quero fazer um anexar arquivo de uma > > > forma > > > > > > > > diferente e não sei se alguém tem alguma sugetão, vamos lá > > > > > > > > > quero atraves do flex ter a opção tipo anexar arquivo, através > > > > > > > > do > > > > > > > > FileReference o usuário vai e seleciona o arquivo, só que não > > > > > > > > que > > > > > > > > depois pegar esse arquivo e armazenar em um ftp, e sim em um > > > campo > > > > > > > > blob no meu banco de dados(neste caso o firebird), só que > > > confesso que > > > > > > > > não achei nada no google, não estou sabendo pesquisar..hehe > > > > > > > > > Sugestões são bem vindas... > > > > > > > > > Vlw..Cumps. > > > > > > > > -- > > > > > > > Abraços...... > > > > > > > > Marcel Araujo > > > > > > > System Analyst > > > > > > > Developer Java/PHP/RIA > > > > > > > Linux User #490101 > > > >http://br.linkedin.com/in/marcelaraujohttp://www.kombo.com.br/meucurr... > > > > > > -- > > > > > Mario Junior > > > > > Enterprise Java / Flex Architectures > > > > > Adobe Certified Expert Flex 3 with AIR > > > > > > Sofshore Informáticahttp://www.sofshore.com.br > > > > > +55 (48) 3337 2003 > > > > > Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 > > > Itacorubi > > > > > Florianopolis SC Brasil > > > -- > > Atenciosamente > > Everton Romero Rivas > > evertonri...@gmail.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---