上传文件判断类型的问题
时间:2011-12-15
来源:互联网
C# code
上面是定义,下面是调用
C# code
下面调用 的代码,我一开始放在获取文件流之后立即判断,但发现存入服务器之后图片坏了
于是又改成了存入服务器之后再判断,可是图片还是坏了
但是把下面这段代码注释掉之后图片又正常了,这到底啥意思?
public enum FileExtension { JPG = 255216, GIF = 7173, PNG = 13780, SWF = 6787, RAR = 8297, ZIP = 8075, _7Z = 55122, BMP=6677, EXE=7790, XML=6063, HTML=6033, ASPX=239187, CS=117115, JS=119105, TXT=102100 } public static bool IsAllowedExtension(HttpPostedFile fu, FileExtension[] fileEx) { int fileLen = fu.ContentLength; byte[] imgArray = new byte[fileLen]; fu.InputStream.Read(imgArray, 0, fileLen); MemoryStream ms = new MemoryStream(imgArray); System.IO.BinaryReader br = new System.IO.BinaryReader(ms); string fileclass = ""; byte buffer; try { buffer = br.ReadByte(); fileclass = buffer.ToString(); buffer = br.ReadByte(); fileclass += buffer.ToString(); } catch { } br.Close(); ms.Close(); foreach (FileExtension fe in fileEx) { if (Int32.Parse(fileclass) == (int)fe) return true; } return false; }
上面是定义,下面是调用
C# code
if (postedfile != null) { if (!Tools.Verification.IsAllowedExtension(postedfile, fe)) { if (target != "") { if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(target))) { System.IO.File.Delete(HttpContext.Current.Server.MapPath(target)); err = "文件非法!!!"; } } } }
下面调用 的代码,我一开始放在获取文件流之后立即判断,但发现存入服务器之后图片坏了
于是又改成了存入服务器之后再判断,可是图片还是坏了
但是把下面这段代码注释掉之后图片又正常了,这到底啥意思?
作者: z1101385391 发布时间: 2011-12-15
顶一下
作者: z1101385391 发布时间: 2011-12-15
怎么没人回答啊
作者: z1101385391 发布时间: 2011-12-15
晕这样写是不是太复杂了点??
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型
扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型
扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。
作者: chromeV8 发布时间: 2011-12-15
引用 3 楼 chromev8 的回复:
晕这样写是不是太复杂了点??
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型
扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。
晕这样写是不是太复杂了点??
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型
扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。
第一个不说了,逃过去很容易
第二个,ContentType可以在注册表里面改
作者: z1101385391 发布时间: 2011-12-15
好像contenttype改不了···唉···郁闷···
作者: z1101385391 发布时间: 2011-12-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28