2015-02-23 129 views
2

我正在創建一個應用程序,用戶在其中上傳服務器上不同類型的文檔。我正在驗證不同類型的文件,如jpeg,jpg,PNG,TIF,TIFF,GIF,BMP,ICO。如何檢查文檔是否爲有效的PDF文檔

Dictionary<string, byte[]> imageHeader = new Dictionary<string, byte[]>(); 
    imageHeader.Add("JPG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 }); 
    imageHeader.Add("JPEG", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 }); 
    imageHeader.Add("PNG", new byte[] { 0x89, 0x50, 0x4E, 0x47 }); 
    imageHeader.Add("TIF", new byte[] { 0x49, 0x49, 0x2A, 0x00 }); 
    imageHeader.Add("TIFF", new byte[] { 0x49, 0x49, 0x2A, 0x00 }); 
    imageHeader.Add("GIF", new byte[] { 0x47, 0x49, 0x46, 0x38 }); 
    imageHeader.Add("BMP", new byte[] { 0x42, 0x4D }); 
    imageHeader.Add("ICO", new byte[] { 0x00, 0x00, 0x01, 0x00 }); 

我也想爲pdf,docx,excel,PPT做同樣的事情。請幫我找到這些文件的十六進制代碼。

如果有人試圖上傳無效文檔,我也想驗證損壞的文檔。

+1

驗證docx會非常複雜,因爲主要的二進制格式只是一個ZIP存檔,但內容是特定的。所以你真的想驗證它實際上是docx,或者「可能是docx」,意思是一個ZIP壓縮文件,它可能是xlsx,或者只是一個隨機的文件集合?另外一個有效的PDF文檔將需要實際解析整個文件,但檢查開始可能表明它可能是一個。 – 2015-02-23 10:19:55

+0

我只想驗證上面提到的文檔 – Bheeshamteche 2015-02-23 10:55:12

回答

0

libmagic是這類事情的圖書館。它落後於現代Unix系統中的file命令。你可以通過FFI /綁定使用它,或者只是看他們的magic number database