2016-08-05 140 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

相关问题