Pergunta

Eu tenho uma tabela com uma coluna de binário que arquivos de um número de diferentes tipos de arquivos possíveis (PDF, BMP, JPEG, WAV, MP3, DOC, MPEG, AVI etc.) lojas, mas há colunas que armazenam o nome ou o tipo do arquivo original. Existe alguma maneira fácil para mim para processar essas linhas e determinar o tipo de cada arquivo armazenado na coluna binário? De preferência seria um utilitário que só lê os cabeçalhos dos arquivos, de modo que eu não tenho para extrair totalmente cada arquivo para determinar seu tipo.

Clarificação : Eu sei que a abordagem aqui envolve a leitura apenas o começo de cada arquivo. Eu estou procurando um bom recurso (aka links) que pode fazer isso para mim sem muito barulho. Obrigado.

Além disso, apenas C # /. NET no Windows, por favor . Não estou usando o Linux e não pode usar Cygwin (não funciona em Windows CE, entre outras razões).

Foi útil?

Solução

Você pode usar essas ferramentas para encontrar o formato de arquivo.

Arquivo Analyzer http://www.softpedia.com/get/ Programação / Other-Programming-Files / File-Analyzer.shtml

O Format http://www.jozy.nl/whatfmt.html

formato de arquivo PE analisador http://peid.has.it/

Este site pode ser útil para você. http://mark0.net/onlinetrid.aspx

Nota: i ter incluído o link de download para se certificar de que você está recebendo o nome da ferramenta direita e informações.

Por favor, verificar a origem antes de baixá-los.

i ter usado uma ferramenta no passado eu acho que é Arquivo Analyzer, que irá dizer-lhe a correspondência mais próxima.

ferramentas feliz.

Outras dicas

Esta não é uma resposta completa, mas um lugar para começar seria um "números mágicos" biblioteca. Ele examina os primeiros bytes de um arquivo para determinar um "número mágico", que é comparado com uma lista conhecida deles. Este é (pelo menos parte) de como o comando file em sistemas obras Linux.

Alguém fez uma pergunta semelhante e postou o código usado para fazer exatamente isso. Você deve ser capaz de tomar o que é postado aqui, e ligeiramente modificá-lo para que ele puxa a partir de seu banco de dados.

https://stackoverflow.com/questions/58510

Além disso, parece que alguém tem escrito uma biblioteca baseado fora de números mágicos para fazer isso, no entanto, parece que o site exige registro, e alguma forma de acesso alternativo, a fim de baixar este lirbary. A documentação está disponível gratuitamente sem registro, que pode ser útil.

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

A maneira mais fácil eu sei é usar o comando que também é disponível no Windows com Cygwin .

Um monte de tipos de arquivos têm bem cabeçalhos que começam o arquivo definido. Você pode verificar os primeiros bytes para verificar para ver como o arquivo começa.

A maneira mais fácil de fazer isso seria através do acesso a um sistema * nix (ou cygwin) que tem o comando 'file':

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

Você poderia escrever um aplicativo C # que encanada os primeiros bytes X de cada coluna binário para o comando arquivo (usando - como o nome do arquivo)

Você precisa usar algum p / invoke código de interoperabilidade para chamar o SHGetFileInfo método da API Win32. Este artigo também pode ajudar.

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