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
-~----------~----~----~----~------~----~------~--~---

Responder a