Teu server tá jogando o arquivo com o conteúdo MIME inteiro (como uma mensagem de e-mail ou um mhtml do ie). Um arquivo binário não teria os cabeçalhos.

Em .net eu simplesmente faria um response.clear, escreveria o header de MIME e mandaria o binário via stream e o flex recebe de boa, mas em PHP não saberia ajudar =\

--------------------------------------------------
From: "Janderson" <janderson...@hotmail.com>
Sent: Thursday, December 03, 2009 11:22 AM
To: "flexdev" <flexdev@googlegroups.com>
Subject: [flexdev] Re: Arquivos blob, sugestão!?


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

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

Responder a