如何正确地从用户验证文件并检测扩展名更改

本文关键字:检测 扩展名 文件 验证 正确地 用户 | 更新日期: 2023-09-27 18:15:04

我有这样的代码

public bool IsImage(HttpPostedFileBase file)
{
    var contentType = file.ContentType.Split("/")(0).ToLower() == "image"
    if (contentType != "image")
    {
         return false;
    }
    return true;
}

但是,如果用户将.exe文件重命名为.jpg,它仍然认为它是一个有效的映像文件。如何预防这种情况?

如何正确地从用户验证文件并检测扩展名更改

检查它是否为图像的最简单方法是将其加载为图像,例如使用Image.FromStream。如果引发异常,则表示它不是图像(或者至少不是受支持的图像格式)。比起仅仅使用扩展名或声明的MIME类型,我更相信这一点。