Pregunta

Tengo una tabla con una columna binaria que almacena archivos de diferentes tipos de archivos posibles (PDF, BMP, JPEG, WAV, MP3, DOC, MPEG, AVI, etc.), pero no hay columnas que almacenen el nombre o El tipo del archivo original. ¿Hay alguna manera fácil de procesar estas filas y determinar el tipo de cada archivo almacenado en la columna binaria? Preferiblemente, sería una utilidad que solo lea los encabezados de los archivos, de modo que no tenga que extraer completamente cada archivo para determinar su tipo.

Aclaración : Sé que el enfoque aquí implica leer solo el comienzo de cada archivo. Estoy buscando un buen recurso (también conocido como enlaces) que pueda hacer esto por mí sin demasiado alboroto. Gracias.

Además, solo C # /. NET en Windows, por favor . No estoy usando Linux y no puedo usar Cygwin (no funciona en Windows CE, entre otras razones).

¿Fue útil?

Solución

puede usar estas herramientas para encontrar el formato de archivo.

Analizador de archivos http://www.softpedia.com/get/ Programación / Otros archivos de programación / File-Analyzer.shtml

Qué formato http://www.jozy.nl/whatfmt.html

Analizador de formato de archivo PE http://peid.has.it/

Este sitio web puede ser útil para usted. http://mark0.net/onlinetrid.aspx

Nota: He incluido los enlaces de descarga para asegurarme de que está obteniendo el nombre y la información correctos de la herramienta.

verifique la fuente antes de descargarlos.

He usado una herramienta en el pasado, creo que es File Analyzer, que le dirá la coincidencia más cercana.

herramientas felices.

Otros consejos

Esta no es una respuesta completa, pero un lugar para comenzar sería un "número mágico". biblioteca. Esto examina los primeros bytes de un archivo para determinar un "número mágico", que se compara con una lista conocida de ellos. Esto es (al menos parte) de cómo funciona el comando file en sistemas Linux.

Alguien más hizo una pregunta similar y publicó el código utilizado para hacer exactamente esto. Debería poder tomar lo que está publicado aquí y modificarlo ligeramente para que se extraiga de su base de datos.

https://stackoverflow.com/questions/58510

Además de eso, parece que alguien ha escrito una biblioteca basada en números mágicos para hacer esto, sin embargo, parece que el sitio requiere registro y alguna forma de acceso alternativo para descargar esta biblioteca. La documentación está disponible de forma gratuita sin registro, lo que puede ser útil.

http://software.topcoder.com/catalog/c_component .jsp? comp = 13249160 & amp; ver = 2

La forma más fácil que conozco es usar el comando que también es disponible en Windows con Cygwin .

Muchos tipos de archivos tienen encabezados bien definidos que comienzan el archivo. Puede verificar los primeros bytes para verificar cómo comienza el archivo.

La forma más fácil de hacer esto sería mediante el acceso a un sistema * nix (o cygwin) que tiene el comando 'archivo':

$ file visitors.*
visitors.html: HTML document text
visitors.png:  PNG image data, 5360 x 2819, 8-bit colormap, non-interlaced

Podría escribir una aplicación C # que canalizara los primeros X bytes de cada columna binaria al comando del archivo (usando - como el nombre del archivo)

Debe usar algún código de interoperabilidad p / invoke para llamar a SHGetFileInfo método de la API Win32. Este artículo también puede ayudar.

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