2016-08-05 57 views
0

Ich arbeite mit C# und asp.netWie überprüfe ich, ob die hochgeladene Datei das richtige Format hat?

Ich habe eine Webseite mit einem Webformular erstellt, wo Sie Ihre Informationen eingeben, um es einzureichen. Es gibt auch einen Datei-Upload auf meiner Seite: <asp:FileUpload ID="FileUploadPassfoto" runat="server"/> In meinem C# -Code habe ich einen IF-Loop programmiert, der prüft, ob etwas hochgeladen wurde. Gefällt mir:

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; 
} 

Was es tut ist: Wie ich sagte, es überprüft, ob etwas hochgeladen wurde. Wenn nichts hochgeladen wurde, wird ein ErrorLabel angezeigt, damit der Benutzer weiß, dass er das Hochladen vergessen hat.

Was ich auch überprüfen möchte, ist, ob die hochgeladene Datei ein Bild ist. Um klarer zu sein, möchte ich nur .jpg/.bmp und .gif akzeptieren. Wenn ein falsches Format hochgeladen wird, möchte ich auch mein ErrorLabel anzeigen.

Ich weiß nicht wirklich, wie ich das tun soll, können Sie mir bitte helfen? Danke

+0

Vielen Dank, ich weiß, dass es ist, aber ich wollte nur eine Antwort, wo meine IDs und Methoden ..... etc. angezeigt werden, so ist es einfacher für mich ... Ursache im neuen Geschäft xD i ' Ich lösche es. Danke für deine Hilfe @David –

+0

Ich habe gerade die Seite angesehen, die du mit mir verlinkt hast. Ich habe keine Ahnung, wie ich das in meinem Fall umsetzen soll! Es tut mir leid, aber ich werde meine Frage nicht löschen ... @David –

+0

Was speziell ist unklar? Je mehr ich auf diese andere Antwort schaue, desto identischer erscheint diese Frage. Haben Sie versucht, diese Funktion zu implementieren? Wo bist du stecken geblieben? – David

Antwort

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!"; 
    } 

Hoffnung Seiner Hilfe Sie viel mehr ....

+1

Wenn Sie dies tun, sollten Sie 'string strExtension = Path.GetExtension (strFileName.ToLower());' verwenden Wenn jemand ein Bild mit einer Großbuchstaben-Erweiterung hochlädt, wird Ihre Validierung fehlschlagen. – VDWWD

+0

ja richtig, danke :) .. .. –

+0

kannst du mir helfen, meine Frage gleich wieder zu bekommen. Ich wurde von der Frage verbannt, weil ich nicht wissen konnte, wie man fragt und wie man dann programmiert, als ich das fragte. Sie würden mir wirklich mit einem upvote helfen <3 –

1

Hier ist eine vereinfachte Version des Link, den David in den Kommentaren geschrieben hat.

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

in welchem ​​Verzeichnis .contenttype ist? –

+0

Was meinst du mit Verzeichnis? ContentType ist eine Eigenschaft der HttpPostedFile-Klasse. – VDWWD