簡體   English   中英

獲取發布的文件擴展名asp.net

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM