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 ifsServletOutputStream ouputStream = response.getOutputStream(); //linha repetida em todos ifsouputStream.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 bancoif (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.comPara sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.comMais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
smime.p7s
Description: S/MIME cryptographic signature