簡體   English   中英

c#如何確定上傳的文件類型

[英]how to make sure of the uploaded file type in c#

我想讓用戶上傳圖片和視頻到我的網站。 通常我會檢查jpgpng擴展名的圖像擴展名。 但是我通過上傳一個外殼來破解它來測試我的網絡的安全性,所以我將外殼的擴展名更改為.jpg

遺憾的是,它已正常上傳到主機的文件夾並顯示我的所有文件,因此,如果有人知道在將其上傳到C# Asp.net主機之前確保此文件是視頻或此文件是真實圖像的最佳方法網頁表格。

我想分享在上傳文件之前獲取文件類型/內容類型的最簡單方法。

            string file_type;
            var provider = new FileExtensionContentTypeProvider();
            if(!provider.TryGetContentType(finlename, out file_type))
            {
                file_type = "application/octet-stream";
            }

您可以檢查文件的內容類型。 以下代碼可能會有所幫助:

public static readonly string[] mimeTypes = new[] { "image/jpeg", "image/png" };

if (mimeTypes.Contains(fileBox.PostedFile.ContentType))
{ // Do something.    
}

另外,我建議客戶端驗證。 這將有助於在發布到服務器之前檢查內容類型。 這也將有助於節省帶寬。

以下鏈接應該可以幫助您:

如何在上傳前使用 javascript 檢查文件 MIME 類型?

不僅是文件擴展名,還可以檢查“圖像/jpeg、圖像/png、圖像/gif”的 mime 類型是要走的路。

您可以驗證文件的擴展名。 使用此代碼。

   protected void ValidateFile(IFormFile file)
    {
        if (file == null)
            throw new Filters.ApiException(this.Localizer[string.Format(ErrorConst.SelectFile)].Value, 400);
        if (file.Length < 1)
            throw new Filters.ApiException(this.Localizer[string.Format(ErrorConst.ErrorImageSize)].Value, 400);

        int filesize = 3;
        string[] supportedTypes = new[] { "jpg", "jpeg", "png", "bmp" };
        var fileExt = System.IO.Path.GetExtension(file.FileName).Substring(1);
        if (!supportedTypes.Contains(fileExt))
            throw new Filters.ApiException(this.Localizer[ErrorConst.ErrorImageExtension].Value, 400);
        if (file.Length > (filesize * 1024 * 1024))
            throw new Filters.ApiException(this.Localizer[string.Format(ErrorConst.ErrorImageSize, filesize)].Value, 400);
    }

這是經過驗證的文件和文件大小。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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