Domanda

Ho una tabella con una colonna binaria che memorizza i file di un numero di diversi tipi di file possibili (PDF, BMP, JPEG, WAV, MP3, DOC, MPEG, AVI ecc.), ma nessuna colonna che memorizza il nome o il tipo di file originale. Esiste un modo semplice per elaborare queste righe e determinare il tipo di ciascun file archiviato nella colonna binaria? Preferibilmente sarebbe un'utilità che legge solo le intestazioni dei file, quindi non devo estrarre completamente ogni file per determinarne il tipo.

Chiarimento : so che l'approccio qui prevede la lettura solo all'inizio di ogni file. Sto cercando una buona risorsa (aka collegamenti) che possa farlo per me senza troppe storie. Grazie.

Inoltre, solo C # /. NET su Windows, per favore . Non sto usando Linux e non posso usare Cygwin (non funziona su Windows CE, tra le altre ragioni).

È stato utile?

Soluzione

puoi usare questi strumenti per trovare il formato del file.

File Analyzer http://www.softpedia.com/get/ Programmazione / Altro-Programmazione-Files / File-Analyzer.shtml

Quale formato http://www.jozy.nl/whatfmt.html

Analizzatore formato file PE http://peid.has.it/

Questo sito Web può essere utile per te. http://mark0.net/onlinetrid.aspx

Nota: ho incluso i link per il download per assicurarmi di ottenere il nome e le informazioni dello strumento giusto.

verifica la fonte prima di scaricarli.

Ho usato uno strumento in passato, penso che sia File Analyzer, che ti dirà la corrispondenza più vicina.

strumenti felici.

Altri suggerimenti

Questa non è una risposta completa, ma un punto di partenza sarebbe un "numero magico". biblioteca. Questo esamina i primi pochi byte di un file per determinare un "numero magico", che viene confrontato con un elenco noto di essi. Questo è (almeno in parte) del funzionamento del comando file su sistemi Linux.

Qualcun altro ha posto una domanda simile e ha pubblicato il codice utilizzato per fare esattamente questo. Dovresti essere in grado di prendere ciò che è pubblicato qui e modificarlo leggermente in modo che venga estratto dal tuo database.

https://stackoverflow.com/questions/58510

Oltre a ciò, sembra che qualcuno abbia scritto una libreria basata su numeri magici per farlo, tuttavia, sembra che il sito richieda la registrazione e una qualche forma di accesso alternativo per scaricare questo lirbary. La documentazione è disponibile gratuitamente senza registrazione, che può essere utile.

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

Il modo più semplice che conosco è usare file che è anche disponibile in Windows con Cygwin .

Molti tipi di file hanno intestazioni ben definite che iniziano il file. È possibile controllare i primi byte per verificare come inizia il file.

Il modo più semplice per farlo sarebbe attraverso l'accesso a un sistema * nix (o cygwin) che ha il comando 'file':

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

Potresti scrivere un'applicazione C # che ha reindirizzato i primi X byte di ogni colonna binaria al comando file (usando - come nome del file)

Devi usare un codice di interoperabilità p / invoke per chiamare SHGetFileInfo dall'API Win32. Anche questo articolo può essere d'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top