首页 新闻 搜索 专区 学院

ASP.NET MVC 怎么判断上传的图片是真正的图片

0
[已解决问题] 解决于 2013-11-17 17:07

上传图片控件依靠后缀名来判断是不是图片可是如果把一个非图片的文件如apach.exe的后缀名改成了.jpg。那么也可以上传了,但浏览网页显示图片的时候必然出问题了。

我想求教有没有办法验证文件是不是“真正”的图片文件。在客户端验证还是在服务器验证都行。希望给个思路

大芝麻的主页 大芝麻 | 初学一级 | 园豆:4
提问于:2013-11-17 12:21
< >
分享
最佳答案
0

能够,但是复杂,简单点可以通过图片文件的 Header 部分来判断.

http://blog.csdn.net/soief/article/details/4154699

也就是说没有 header,不代表文件不是某种格式的图片.举个简单的例子,以 BMP 存储的图片,通常都只包含数据部分.建议你学习下《计算机图形学》。

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2013-11-17 16:23

计算机图形学,这书有,是大学的必修课,可是都忘记了。。。。找来看看,多谢!

大芝麻 | 园豆:4 (初学一级) | 2013-11-17 17:07

@大芝麻: 或者你可以用 Image 类来尝试打开文件,如果能打开,就表示没问题,打不开的话,很大的可能不是图片.

Launcher | 园豆:45045 (高人七级) | 2013-11-18 09:20

@Launcher: 这个很好啊,试了下判断一个3M的非图片文件都只需要1-3毫秒。绝对够用了,谢谢,希望以后搜到同样问题的人可以试试

while (true)
{
DateTime d = DateTime.Now;
try
{
Image newImage = Image.FromFile(@"H:\web2\图片素材库\3.jpg");
}
catch
{
Console.WriteLine((DateTime.Now - d).Milliseconds);
}

}

大芝麻 | 园豆:4 (初学一级) | 2013-11-19 11:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册