2009-10-28 75 views
0

我想獲得使用ASP.NET FileUpload控件上傳的文件類型。當我上傳文件時,我希望能夠獲得上傳的文件類型,因此我可以爲文件分配一個圖標(如單詞,excel,pdf圖標)。從ASP.NET FileUpload控件獲取文件的類型?

這是問題所在,我無法關閉文件擴展名,因爲文件可能被稱爲test.xxxxxxxx並且是有效的pdf文件,或者文件可能沒有擴展名。

另一種選擇是讀取內容類型,但其中一些看起來不是標準的或者以簡單的方式讀取格式,例如excel文件,那麼是否有另一種選擇來確定文件類型?

回答

1

我會檢查一個不帶「.pdf」擴展名的PDF文件「test.xxxxxxxx」的過程。大多數工作流程文件具有某種命名約定(手動或自動)

如果無法讀取擴展名,則需要通過使標識符成爲已知文件格式的標記來檢測文件格式:例如:如果流以「%PDF」開頭或包含PDF。

0

如果你不知道擴展名,那麼你將不得不知道流行的文件類型的文件格式,然後閱讀該文件,看看它是否符合你的一種已知格式。但這聽起來並不理想。

0

一個簡單的方法來檢查的真正類型的文件服務器端,使用System.IO.BinaryReader,這裏描述:

http://forums.asp.net/post/2680667.aspx

和VB版本在這裏:

http://forums.asp.net/post/2681036.aspx

您需要知道您正在檢查的文件類型的二進制「代碼」,但您可以通過實施此解決方案並調試代碼來獲得這些代碼。

還要注意的是,當BinaryReader在與r.Close()聲明關閉,這將使FileUploader.HasFile =假