Question

J'ai une application Winforms qui stocke le contenu des fichiers dans une base de données. Les fichiers stockés peuvent être de n'importe quel type (Word, Excel, PDF, texte, image, etc.), l'utilisateur peut sélectionner à peu près n'importe quel type de fichier à charger.

L'utilisateur peut ensuite interroger la base de données, rechercher un fichier, puis l'ouvrir.

Je n'ai aucun problème à extraire le tableau d'octets de la base de données, sous forme de flux ou de tableau d'octets.

Idéalement, je serais capable d’afficher le fichier directement à partir d’un tableau ou d’un flux d’octets; au moment où je l'enregistre en tant que fichier temporaire, puis en l'ouvrant avec:

Process.Start(fileName);

Comment puis-je afficher le fichier avec l'application associée à partir d'un fichier de tableau ou de flux d'octets?

Était-ce utile?

La solution

Dans Windows, votre seule option est de faire exactement ce que vous faites. Outlook, Internet Explorer, Firefox, tout cela

Autres conseils

Peut-être voudrez-vous vous renseigner un peu sur le fichier mappé en mémoire.

vous pouvez essayer d'ouvrir le répertoire qui le contient, mais ce sera la même chose que vous faites maintenant. Si l'application associée est connue du système d'exploitation, aucun problème ne se produira ..

Si vous stockez un nom de fichier dans la base de données avec le flux d'octets, vous pouvez déterminer le type de fichier à partir de l'extension. Il y a deux options dans ce cas:

  1. Utilisez le registre pour déterminer quelle application utiliser. Pour plus d'informations à ce sujet, consultez cette conversation sur octets. .com .
  2. P / Invoke SHGetFileInfo à déterminer quelle application utiliser.

NB: Avec les deux options, vous aurez toujours besoin d'écrire les données du fichier dans un fichier temporaire sur le disque pour pouvoir le charger.

Personnellement, je pense que ce que vous faites est probablement l’option la plus simple, de toute façon (à moins que vous ne souhaitiez fournir des visualiseurs personnalisés pour certains types de fichiers, etc.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top