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 doarquivo. 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.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