Usuário com melhor resposta
Como abrir 1 arquivo guardado no BD com o seu devido aplicativo do windows?

Pergunta
-
Bom dia a todos!
Tenho a seguinte situação: Tenho uma aplicação windows que trabalha com uma tabela em mysql q possui um campo blob.
Em determinado momento no tempo é solicitado ao usuário q ele guarde um arquivo (pode ser um documento word, excel, pdf, imagem, etc), este arquivo é salvo neste campo blob.
Agora desejo recuperar este arquivo e abrí-lo para que o usuário possa visualizá-lo.
A rotina de guardar e recuperar está funcionando, pois testei com campo texto e word.
Eis minha rotina q recupera 1 foto, por exemplo, eu recupero um vetor de bytes do campo blob.
Code Snippetbyte
[] dados = null; Configuracao.recuperaBinaryFieldMySQL("REGTRANSPESCOLAR", "doc", " id = " + txtid.Text, ref dados);ptbrhfoto.Image = System.Drawing.
Image.FromStream((new MemoryStream(dados)));Porém gostaria que, a aplicação recuperasse este arquivo e abrisse o respectivo aplicavo que gerencia aquele dado. Por exemplo word para arquivo.doc , adobe para .pdf, etc.
Alguém já passou por essa situação ou viu algo que pode me ajudar?
Muito Obrigado desde já.
Respostas
-
Impossível.
O Windows identifica seus arquivos através da extensão (note: o Shell do Windows, não os aplicativos que o abrem).
Sem uma extensão, fica impossível pro Shell (Windows Explorer) determinar quem abre este arquivo.
Você vai ter que inserir este nome numa base ou em algum lugar...
É possível, no entanto, identificar um arquivo através de seu conteúdo. Por exemplo: todo PNG inicia com PNG, todo zip inicia com PK, todo RAR inicia com RAR... Se seus arquivos forem de poucos tipos, por exemplo, planilhas do excel e documentos do word, até pode ser possível identificar os tipos de arquivos... mas se a versão mudar ou alguma coisa no arquivo mudar, ferrou.
O mais correto seria associar seus dados com o nome do arquivo.
Todas as Respostas
-
Em CTosko, não faço a mínima idéia.
Mas nada impede você de importar Microsoft.VisualBasic e usar a função Shell.
Shell permite você "executar" um .doc e o Windows sozinho irá abrir a aplicação apropriada para lidar com este tipo de arquivo.
Ficaria como
Shell("C:\Teste.doc", Opcoes) onde opções tem opções para abrir maximizado, normal, com focus, esperar o processo terminar antes de continuar, etc...
Como a referência a Microsoft.VisualBasic faz parte do .Net framework, não há nenhum impacto em utilizá-la. (A menos, claro, que pretenda inserir seu aplicativo num XBOX 360... mas de qualquer forma não tem word lá ^^) -
oi JCKödel,
Este é o problema, consigo converter seu código para C#, porém eu ñ tenho o nome do arquivo nem sua extensão para utilizar esta alternativa, captou? só tenho os dados. como fazer o windows abrir o aplicativo tendo somente o conteudo? será q é possível ou terei q criar outro campo com o nome original do arquivo?
-
Impossível.
O Windows identifica seus arquivos através da extensão (note: o Shell do Windows, não os aplicativos que o abrem).
Sem uma extensão, fica impossível pro Shell (Windows Explorer) determinar quem abre este arquivo.
Você vai ter que inserir este nome numa base ou em algum lugar...
É possível, no entanto, identificar um arquivo através de seu conteúdo. Por exemplo: todo PNG inicia com PNG, todo zip inicia com PK, todo RAR inicia com RAR... Se seus arquivos forem de poucos tipos, por exemplo, planilhas do excel e documentos do word, até pode ser possível identificar os tipos de arquivos... mas se a versão mudar ou alguma coisa no arquivo mudar, ferrou.
O mais correto seria associar seus dados com o nome do arquivo.