2016-12-13 5 views
2

Ich entwickle derzeit eine Website, wo der Benutzer aus Sicherheitsgründen ein gültiges Bild und keine anderen Dateitypen hochladen kann. Atm Ich habe diesen Code, aber die Bild-Erweiterung könnte noch manipuliert werden..NET C# Bild-Upload-Validierung

if (extension == ".jpg" || extension == ".jpeg" || extension == ".JPG" || extension == ".gif" || extension == ".png" 

Gibt es eine Möglichkeit absolut sicher zu stellen, dass nur diese Bildformate sind erlaubt, und dass sie nicht verändert werden können (wie eine globale Code für jedes Format). Danke

+0

Mögliches Duplikat: http://stackoverflow.com/questions/670546/determine-if-file-is-animage –

+1

@WayneO Es sieht so aus, als ob Jack diese Serverseite validiert. –

+0

@DanielShillcock Sie haben Recht, ich entschuldige mich, dass ich das C# -Tag nicht gesehen habe –

Antwort

0

Es ist besser, contentType anstelle von Erweiterung zu überprüfen.

Sie können eine ziemlich umfassende Liste hier finden: http://www.freeformatter.com/mime-types-list.html.

Eine einfache Prüfung kann auf folgende Weise erfolgen:

if (myFile.ContentType == "video/mpeg") 
{ 
    // Do your thing 
} 
else{ 
    // error 
} 

Wenn Sie mehr überprüfen möchten, können Sie dies zum Beispiel verwenden:

string[] filetypes = { "application/pdf", "image/jpeg", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel" }; 
if (!filetypes.Contains(myFile.File.ContentType)) 
       { 
        //not accepted content type 
       } 

Und Sie können auch überprüfen, ob sein ein gültiges Bild, indem Sie versuchen, eine neue Bitmap

try 
{ 
    using (var bitmap = new System.Drawing.Bitmap(myFile.InputStream)) 
    { 
    } 
} 
catch (Exception) 
{ 
    return false; 
} 
+0

Ich habe den Code in geändert if (file.ContentType.ToLower() == "image/jpeg" || file.ContentType.ToLower() == "image/gif" || file.ContentType.ToLower() == "image/png" aber damit könnte der Benutzer noch andere Bildformate in jpg oder so umwandeln und von der Anwendung akzeptiert werden –

0

Check out this questi zu instanziiert Ich benutze diese Lösung schon seit einiger Zeit.