2013-10-12 18 views
6

Ich bekomme immer "Nur Bilder sind erlaubt" und ich habe versucht "file.PostedFile.FileName" auch nicht funktioniert !!Posted Dateiendung asp.net

dieser Code in einer separaten Klasse geschrieben ..

public static String UploadFile(FileUpload file, String type, out String filename) 
{ 
    String ext = System.IO.Path.GetExtension(file.FileName); 
    filename = ""; 
    if (file.PostedFile.ContentLength > 2000000) 
    { 
     return "File is larger than 2 MB"; 
    } 
    else if (type != "File") 
    { 
     if (ext.ToLower() != ".jpg" || ext.ToLower() != ".png" || ext.ToLower() != ".gif" || ext.ToLower() != ".jpeg") 
     { 
      return "Only images are allowed"; 
     } 
     else 
     { 
      filename = System.IO.Path.GetRandomFileName() + "_" + file.PostedFile.FileName; 
      String root = HttpContext.Current.Server.MapPath("~/Images/"); 
      file.SaveAs(root + type + "/" + filename); 
      return "Success"; 
     } 
    } 
    else 
    { 
     filename = System.IO.Path.GetRandomFileName() + "_" + file.PostedFile.FileName; 
     String root = HttpContext.Current.Server.MapPath("~/Files/"); 
     file.SaveAs(root + filename); 
     return "Success"; 
    } 
} 
+0

Welche Art von Fikle übergibt man an diese Methode? –

+0

Können Sie nicht File.Extension() –

Antwort

6

Ihr Zustand ist falsch, sollte es wie folgt vor:

if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg") 
{ 
return "Only images are allowed"; 
} 
else 
{ 
///statement 
} 

ODER

if (ext.ToLower() == ".jpg" || ext.ToLower() == ".png" || ext.ToLower() == ".gif" || ext.ToLower() == ".jpeg") 
    { 

    ///statement 
    } 
    else 
    { 
return "Only images are allowed"; 
    } 
+1

@Anas .. aus der Sicht des Compilers, zweite ist am besten, sollten Sie dies verwenden. – NMathur

3

Ihre Bedingung für gültige Erweiterung für die Überprüfung ist logisch falsch (ergibt immer true). Es sollte so sein (|| mit && ersetzt werden):

if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg") 
{ 
    return "Only images are allowed"; 
} 
4

@ Antwort des volpav wird behebe dein Problem, aber das große if ist nicht der sauberste Weg, um das Problem zu behandeln.

Eleganter wäre es, eine Liste der akzeptierten Erweiterungen zu definieren und zu überprüfen, ob ext in der Liste ist. Der Vorteil wäre, dass es einfacher zu warten ist, wenn Sie später die gültigen Typen ändern müssen, und dass Erweiterungen benutzerdefinierbar sind, wenn dies wünschenswert ist.

Im Beispiel unten ich eine Konstante (auch nur lesbare Variable) für meine Klasse bin definiert, die ein Array mit allen Ausnahmen enthält, und verwenden Sie die Contains() Erweiterung Methode, um zu sehen zu testen, ob ext darin besteht, wenn in UploadFile

Validierung

Indem ich es im obigen Code statisch mache, könnte ich diese Liste in der Benutzeroberfläche verwenden, um anzuzeigen, welche Erweiterungen sind, anstatt den Benutzer raten zu lassen, was ein gültiger Bildtyp ist (Es gibt schließlich ein anderes Bild Typen als die, die Sie enthalten haben).

Verwandte Themen