[英]get posted file extension asp.net
我一直得到“只允許圖像”,我試過“file.PostedFile.FileName”也不行!
這段代碼是在一個單獨的類中編寫的..
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";
}
}
你的情況有誤,應該如下:
if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg")
{
return "Only images are allowed";
}
else
{
///statement
}
要么
if (ext.ToLower() == ".jpg" || ext.ToLower() == ".png" || ext.ToLower() == ".gif" || ext.ToLower() == ".jpeg")
{
///statement
}
else
{
return "Only images are allowed";
}
@volpav的答案將解決你的問題,但是if
不是最簡單的方法來處理問題。
更優雅的是定義接受的擴展列表並檢查列表中是否有ext
。 這樣做的好處是,如果您以后必須更改有效類型,則更容易維護,並且如果需要,您可以使擴展用戶可定義。
在下面的例子中,我為我的類定義一個常量(well readonly變量),它包含一個包含所有異常的數組,並使用Contains()
擴展方法測試在UploadFile
驗證時是否存在ext
public static readonly string[] VALID_EXTENSIONS =
new string[4] { ".png", ".jpg", ".gif", ".jpeg" };
// in UploadFile ...
if (!VALID_EXTENSIONS.Contains(ext.ToLower())) {
return "Only images are allowed";
}
通過在上面的代碼中使其靜態,我可以在UI中使用此列表來指示什么是例外擴展,而不是讓用戶猜測什么是有效的圖像類型(畢竟,除了你有的那些之外,還有其他圖像類型包括在內)。
檢查有效擴展的條件在邏輯上是不正確的(始終求值為true
)。 它應該是這樣的( ||
替換為&&
):
if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg")
{
return "Only images are allowed";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.