Pergunta

Eu tenho um winforms aplicativo que armazena o conteúdo de arquivos em um banco de dados. Os arquivos armazenados podem ser de praticamente qualquer tipo (Word, Excel, PDF, texto, imagem ...) o usuário pode selecionar praticamente qualquer tipo de arquivo para carregar.

O usuário pode, em seguida, consultar o banco de dados, encontrar um arquivo e, em seguida, abri-lo.

Eu não tenho problemas ao extrair a matriz de bytes a partir do banco de dados, ou como um riacho ou um array de bytes.

Idealmente, eu seria capaz de exibir o arquivo diretamente a partir de uma matriz de bytes ou fluxo; no momento eu estou salvando-o como um arquivo temporário e, em seguida, abrir isso com:

Process.Start(fileName);

Como posso exibir o arquivo com o aplicativo associado quer a partir de qualquer um dos ficheiro matriz de bytes ou fluxo?

Foi útil?

Solução

Nas janelas, sua única opção é fazer exatamente o que você está fazendo. Outlook, Internet Explorer, Firefox, tudo isso

Outras dicas

Talvez você quer pesquisar um pouco na memória de ficheiros mapeada.

Você pode tentar abrir o diretório que contém-lo, mas ele vai ser a mesma coisa que você está fazendo agora .. se o aplicativo associado é conhecido pelo sistema operacional, então não haverá nenhum problema ..

Se você armazenar um nome de arquivo no DB juntamente com o fluxo de bytes, você pode determinar o tipo de arquivo da extensão. Há duas opções neste caso:

  1. Use o registro para determinar qual aplicativo para uso. Para mais informações sobre isso, dê uma olhada nesta conversa sobre bytes .com .
  2. P / Invoke SHGetFileInfo para determinar qual aplicativo para uso.

NB:. Com as duas opções, você ainda vai precisar para gravar os dados de arquivo para um arquivo temporário no disco, a fim de carregá-lo

Pessoalmente, eu acho que você está fazendo é, provavelmente, a opção mais fácil, de qualquer maneira (a menos que você gostaria de oferecer aos telespectadores personalizados para certos tipos de arquivos, etc)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top