gpt4 book ai didi

asp.net-mvc - 检查上传的文件是否是 C# ASP.NET MVC 中的图像

转载 作者:行者123 更新时间:2023-12-04 14:46:55 25 4
gpt4 key购买 nike

我有我的 Controller

[HttpPost]
public ActionResult ChangeAvatar(HttpPostedFileBase file)
{
AvatarHelper.AvatarUpdate(file, User.Identity.Name);
return RedirectToAction("Index", "Profile");
}

我已经检查文件是否为 jpeg/png 格式:
private static bool IsImage(string contentType)
{
return AllowedFormats.Any(format => contentType.EndsWith(format,
StringComparison.OrdinalIgnoreCase));
}

public static List<string> AllowedFormats
{
get { return new List<string>() {".jpg", ".png", ".jpeg"}; }
}

我需要什么 - 它确保上传的文件是真实的图像文件,而不是带有图像扩展名的 txt 文件。

我像这样转换我上传的文件:
using (var image = System.Drawing.Image.FromStream(postedFile.InputStream))
{
///image stuff
}

我正在考虑从输入流创建图像的 try/catch 块,但我想知道是否有好的方法来做到这一点?
谢谢)

附言

我想知道是否有另一种(比 try/catch 块更有效的方法)检查​​文件是否为真实图像的方法?

最佳答案

您可以使用 RawFormat 属性(property):

private static ImageFormat[] ValidFormats = new[] { ImageFormat.Jpeg, ImageFormat.Png };
public bool IsValid(Stream image)
{
try
{
using (var img = Image.FromStream(file.InputStream))
{
return ValidFormats.Contains(img.RawFormat);
}
}
catch
{
return false;
}
}

您也可以将此验证逻辑放入可重用的验证属性中,如我在 this post 中所示.

关于asp.net-mvc - 检查上传的文件是否是 C# ASP.NET MVC 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com