ASP.NET上传文件对文件类型的高级判断
刚刚从网上找了个方法,试验了一下,是能够辨认出正确的文件类型的,如下:
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
public partial class niunantest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string str = FileUpload1.PostedFile.ContentType;
Response.Write("文件类型:"+str);
string filename = "";
FileExtension[] fe = { FileExtension.GIF, FileExtension.JPG, FileExtension.PNG };
if (FileValidation.IsAllowedExtension(FileUpload1, fe))
{
string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
Response.Write("<br>验证通过!");
//filename = "/Images/" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExt;
//FileUpload1.PostedFile.SaveAs(Server.MapPath(filename));
}
else
{
Response.Write( "<br>验证不通过,只支持以下格式的图片:JPG,GIF,PNG");
return;
}
}
public enum FileExtension
{
JPG = 255216,
GIF = 7173,
PNG = 13780,
SWF = 6787,
RAR = 8297,
ZIP = 8075,
_7Z = 55122
// 255216 jpg;
// 7173 gif;
// 6677 bmp,
// 13780 png;
// 6787 swf
// 7790 exe dll,
// 8297 rar
// 8075 zip
// 55122 7z
// 6063 xml
// 6033 html
// 239187 aspx
// 117115 cs
// 119105 js
// 102100 txt
// 255254 sql
}
public class FileValidation
{
public static bool IsAllowedExtension(FileUpload fu, FileExtension[] fileEx)
{
int fileLen = fu.PostedFile.ContentLength;
byte[] imgArray = new byte[fileLen];
fu.PostedFile.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;
}
}
}
个人理解:上面的代码中判断文件类型的应该是把文件转成二进制的字节,然后取开头2个字节,这样看来的话开头2个字节就表示文件的类型...
转载于:https://www.cnblogs.com/niunan/archive/2009/09/04/1560292.html
ASP.NET上传文件对文件类型的高级判断相关推荐
- ASP.NET上传下载文件
ASP.NET上传下载文件 上传文件: using System; using System.Collections.Generic; using System.Linq; using System. ...
- Asp.net上传文件至目录
Asp.net上传文件,把文件存入至目录中.限制上传文件大小,限制上传文件格式.存取得原来文件名,创建新的文件名. 把文件临时存入临时目录中,处理完毕,最后再移至真正目录. 参考代码: //上传时, ...
- Asp.Net 上传大文件
HttpModule.cs 代码 namespace WebUploadFile { public class HttpUploadModule : IHttpModule { ...
- asp.net 上传大文件解决方案(转)
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的 组件发现用的比较多的有两个控件AspnetUpload 2.0和Lion.Web.UpLoadModule ...
- asp.net 2.0中允许一次上传多个文件的设计
在asp.net 2.0中,可以结合dhtml来实现在用户上传完一个文件后,再点"继续上传",而动态增加上传文件框 首先是前台的页面 <script language=&qu ...
- asp.net 上传大文件控件
这段时间写了个asp.net 上传大文件控件.经过测试,在ie中可显示进度条.特此共享,望广大网友多提意见. 大文件上传控件(包含进度条) 使用说明如下: <summary> 上 ...
- 服务器上传excel文件并读取数据,asp.net上传Excel文件并读取数据的实现方法
前言 本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 实现如下: 前台代码:使用服务端控件实现上传 服务端 ...
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
====================================================== 注:本文源代码点此下载 ================================= ...
- ASP.NET上传文件出现“404-找不到文件或目录”的解决办法
ASP.NET的程序部署在IIS7环境下,上传大文件时出现"404-找不到文件或目录"的错误,如下图: <system.web> <httpRuntime use ...
- 自学Python第二十二天- Django框架(三) AJAX、文件上传、POST 请求类型之间的转换、多APP开发、iframe、验证码、分页器、类视图、中间件、信号、日志、缓存、celery异步
Django官方文档 django 使用 AJAX django 项目中也可以使用 ajax 技术 前端 前端和其他 web 框架一样,需要注意的是,django 接收 POST 请求时,需要 csr ...
最新文章
- 用Duplex实现消息广播
- Function类型
- Linux内核学习笔记十一——I/O层和I/O调度机制
- short 类型的大小为( )个字节。_2008-2012,张一鸣在豆瓣书影音为字节跳动埋下的5个彩蛋...
- Git 分支 - rebase 变基
- C++应用过程中使用知识点
- SQLServer 数据库主体在该数据库中拥有 架构,无法删除解决方法
- Spring Boot 2.X 如何优雅的解决跨域问题?
- linux机器光口和电口的区别,易天光通信SFP电口模块和10G SFP+电口模块介绍
- 字符串反转的进一步应用----单词反转
- oracle数据库下载地址
- 基于R语言的分位数回归(quantile regression)
- 3.APP推广有哪些渠道
- 三维导热问题的ADI-TDMA算法
- Android手机界面组成
- 搜狗搜索图片查看器调用帮助
- CSS3实现流星动画
- NDK实践(一)在linux环境下编译ffmpe
- 欧几里得《几何原本》电子版的内容大纲
- .NetCore后台使用QrCode.Net根据网络链接生成二维码
热门文章
- 编码实现字符串转整型的函数(实现函数atoi的功能)
- eclipse+adt下开发android微信红包自动抢(AccessibilityService类)
- 天线开路短路检测原理_变频空调通讯电路原理与元件级维修
- 为帐户创建一个Apex触发器,以根据自定义字段将送货地址邮政编码与账单地址邮政编码匹配
- JQuery对象和JS对象区别与转换|| 事件绑定 入口函数 样式控制
- javascript引用类型
- Windows 技术篇-Edge浏览器升级方法实例演示,微软官方应用商店访问下载edge慢解决方法,edge安装包获取
- MySQL 数据库show processlist where条件筛选报错解决方法,[Code: 1064, SQL State: 42000] You have an error in your
- Maximum Depth of Binary Tree
- pyrMeanShiftFiltering函数