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>

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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Responder a