none
Como abrir 1 arquivo guardado no BD com o seu devido aplicativo do windows?

    Question

  • 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 Snippet

     

    byte[] 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á.

    Wednesday, July 30, 2008 1:14 PM

Answers

  • 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.
    Monday, August 04, 2008 7:31 PM

All replies

  • 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á ^^)
    Thursday, July 31, 2008 7:01 PM
  •  

    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?

    Monday, August 04, 2008 3:33 PM
  • 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.
    Monday, August 04, 2008 7:31 PM