2016-08-05 94 views
0

我使用c#和asp.net工作如何檢查上傳的文件格式是否正確?

我創建了一個帶有Web表單的網頁,您可以在其中輸入信息以便提交。在我的頁面上還有一個文件上傳:<asp:FileUpload ID="FileUploadPassfoto" runat="server"/>在我後面的c#代碼中,編碼了一個IF循環,用於檢查是否上傳了一些內容。像這樣:

if (FileUploadPassfoto.HasFile == true) 
{ 
     HttpPostedFile file = FileUploadPassfoto.PostedFile; 
     using (BinaryReader binaryReader = new BinaryReader(file.InputStream)) 
     { 
      lehrling.passfoto = binaryReader.ReadBytes(file.ContentLength); 
     } 
     LabelPassfotoError.Visible = false; 
} 
else 
{ 
    LabelPassfotoError.Visible = true; 
    LabelError.Visible = true; 
} 

它所做的是:正如我所說的,它檢查是否有東西上傳。如果沒有上傳,ErrorLabel將顯示,以便用戶知道他忘記上傳。

我想要檢查的是,如果上傳的文件是圖像。爲了更清楚我只想接受.jpg/.bmp和.gif。如果錯誤的格式上傳,我也想顯示我的ErrorLabel。

我真的不知道我應該怎麼做,你能幫我嗎?謝謝

+0

謝謝,我知道這是,但我只是想要一個地方,我的編號和方法.....等顯示,所以它更容易對我來說...導致即時通訊新的業務xD我'我會刪除它。感謝您的幫助@David –

+0

我只是看着你鏈接到我的頁面。我不知道我應該如何實施這個在我的情況!對不起,但我不會刪除我的問題.... @David –

+0

什麼特別不明確?我越看到另一個答案,這個問題看起來就越相同。您是否嘗試實現該功能?你卡在哪裏? – David

回答

2
protected void Button1_Click(object sender, EventArgs e) 
    { 
     string strFileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
     string strFileWithoutExt = Path.GetFileNameWithoutExtension(strFileName); 
     string strExtension = Path.GetExtension(strFileName); 
     if (strExtension == ".jpg" || strExtension == ".bmp" || strExtension == ".gif") 
     { 
      string strImageFolder = "~/YourFilePath/"; 
      if (!Directory.Exists(Server.MapPath(strImageFolder))) 
       Directory.CreateDirectory(Server.MapPath(strImageFolder)); 
      string _strPath = Server.MapPath(strImageFolder) + strFileName; 
      FileUpload1.PostedFile.SaveAs(_strPath); 
      Label1.Text = "Upload status: File uploaded."; 
     } 
     else 
      Label1.Text = "Upload status: only .jpg,.bmp and .gif file are allowed!"; 
    } 

希望它幫助你更....

+1

如果你這樣做,你應該使用'string strExtension = Path.GetExtension(strFileName.ToLower());'如果有人上傳一個帶有大寫擴展名的圖片,你的驗證將失敗。 – VDWWD

+0

是的,謝謝:) –

+0

你能幫我把我的要求回覆。我被禁止問問因爲我不知道該怎麼問,以及當我問這個問題時如何編程。你會真的幫我一個upvote <3 –

1

這裏是大衛張貼在評論鏈接的簡化版本。

HttpPostedFile file = FileUploadPassfoto.PostedFile; 
if (file.ContentType == "image/x-png" || file.ContentType == "image/pjpeg" || file.ContentType == "image/jpeg" || file.ContentType == "image/bmp" || file.ContentType == "image/png" || file.ContentType == "image/gif") 
{ 
    // it is an image 
} 
+0

其中的目錄是.contenttype in? –

+0

你的目錄是什麼意思? ContentType是HttpPostedFile類的一個屬性。 – VDWWD

相關問題