.NET C#图像上传验证

时间:2016-12-13 15:14:46

标签: c# .net image format

我目前正在开发一个网站,用户可以上传有效图片,而不是出于安全目的而上传任何其他文件类型。我有这个代码,但图像扩展仍然可能被篡改。

if (extension == ".jpg" || extension == ".jpeg" || extension == ".JPG" || extension == ".gif" || extension == ".png"

有没有办法确保只允许这些图像格式并且不能更改它们(就像每种格式的全局代码一样)。感谢

2 个答案:

答案 0 :(得分:0)

最好检查contentType而不是扩展名。

您可以在此处找到一个非常全面的列表:http://www.freeformatter.com/mime-types-list.html

可以通过以下方式进行简单检查:

if (myFile.ContentType == "video/mpeg")
{
   // Do your thing
}
else{
   // error
}

如果您想要查看更多内容,可以使用以下代码:

string[] filetypes = { "application/pdf", "image/jpeg", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel" };
if (!filetypes.Contains(myFile.File.ContentType))
                {
                    //not accepted content type
                }

您还可以通过尝试实例化新位图来检查其是否为有效图像

try
{
    using (var bitmap = new System.Drawing.Bitmap(myFile.InputStream))
    {
    }
}
catch (Exception)
{
    return false;
}

答案 1 :(得分:0)

查看this问题,我已经使用此解决方案已有一段时间了。