Pregunta

Tengo una aplicación winforms que almacena el contenido de los archivos en una base de datos. Los archivos almacenados pueden ser de cualquier tipo (word, excel, PDF, texto, imagen ...) que el usuario puede seleccionar casi cualquier tipo de archivo para cargar.

El usuario puede consultar la base de datos, encontrar un archivo y luego abrirlo.

No tengo problemas para extraer la matriz de bytes de la base de datos, ya sea como una secuencia o una matriz de bytes.

Lo ideal sería poder mostrar el archivo directamente desde una matriz de bytes o secuencia; en este momento lo estoy guardando como un archivo temporal y luego lo abro con:

Process.Start(fileName);

¿Cómo puedo mostrar el archivo con la aplicación asociada desde cualquiera de la matriz de bytes o el archivo continuo?

¿Fue útil?

Solución

En Windows, su única opción es hacer exactamente lo que está haciendo. Outlook, Internet Explorer, Firefox, todos hacen esto

Otros consejos

Tal vez desee investigar un poco sobre el archivo de asignación de memoria.

puede intentar abrir el directorio que lo contiene, pero será lo mismo que está haciendo ahora ... si el sistema operativo conoce la aplicación asociada, entonces no habrá ningún problema ...

Si almacena un nombre de archivo en la base de datos junto con la secuencia de bytes, puede determinar el tipo de archivo desde la extensión. Hay dos opciones en este caso:

  1. Use el registro para determinar qué aplicación usar. Para obtener más información sobre esto, eche un vistazo a esta conversación en bytes .com .
  2. P / Invocar SHGetFileInfo para determinar qué aplicación usar.

NB: con ambas opciones aún necesitará escribir los datos del archivo en un archivo temporal en el disco para cargarlo.

Personalmente, creo que lo que está haciendo es probablemente la opción más fácil, de todos modos (a menos que desee proporcionar visores personalizados para ciertos tipos de archivos, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top