上传文件判断大小时应当注意的地方

以前写上传文件时判断文件大小都是用的类似下面的代码:

if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0 && Request.Files[0].ContentLength <= maxPictureSize)
{}
最近才知道原来这样做之后,其实IIS已经处理了所有浏览器提交过来的数据(Request.Form或者Request.BinaryRead都会导致IIS处理请求数据),也就是说其实文件已经被服务器接收了,这时候再判断文件大小已经是属于事后判断,而正确的判断方式应当如下:

long fileLength = long.Parse(Request.Headers["Content-Length"]);
if(fileLength<maxPictureSize && Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{}

这样做虽然在判断文件大小时会有一定的误差,因为这个length还包含了文件之外的其他数据,但基本误差还在可接受范围之内,而这样做的好处是直接避免了文件被真正上传到服务器之后才进行大小判断

这样的做原理就是IIS在处理请求数据时是按照从上往下的顺序执行的,Request.Headers执行跟Request.Form并不关联,也就是说执行了Request.Headers并不会导致IIS对提交的数据进行处理


顺带补充一下文件类型判断规则:

//根据Request.Files[0].ContentType判断并不是很准确,一般情况下它是对的
//但如果你创建个文本文件,然后将它后缀改成jpg,你会发现上传时它的ContentType就是"image/jpeg"或者 "image/pjpeg"
//但实际上它根本就不是jpg图片,所以按照字节判断才更准确
//byte[] bytes = new byte[2];
//读取图片的第一第二个字节到bytes
//判断string.Format("{0}{1}",bytes[0],bytes[1]);
//255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar

再补充一下下载为指定文件名

string fileName = "test.xls";
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "gb2312";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件简介:     人的一生会涉及到很多领域,学到很多知识和技能,学则思,思而理。学习要懂得思考,思考后要懂得整理、消化所学知识,达到触类旁通的效果。21世纪互联网的兴起,可以让我们很容易的获取各类资料,不同的领域会参考不同的网站、不同的文章,学得越多,资料越多,所以有必要分门别类加以管理。     多分类、多子类帮助您管理不同领域的文章、学习笔记;每个分类/子类对应各自不同的网站链接,方便查阅资料或发表相关文章;全文检索功能可以快速查询您之前录入过的数据,免去一个个文件打开然后查找数据的麻烦,如果录入的资料未找到信息也可以让其搜寻网络;导入/导出功能可以使志同道合之人很方便的实现数据共享...... ===============更新日志============== 2012.05.21    【v3.3.6.5】 01、文章页面布局调整,添加常用工具接口 02、软件设置页面添加"文字背景色调"选项卡 03、检测软件是否存放在为C盘,提醒用户转移数据 04、<韵脚大全>添加“词组联想”功能 05、<韵脚大全>"成语联想"修正不能即时搜索问题 06、<韵脚大全>添加“友情链接”模块 07、<韵脚大全>完善“同韵四声”查询时的效果 08、软件设置页面添加告别感悟,修改北漂示意图 2012.02.22    【v3.1.6.2】 01、导入/导出支持更多格式 02、文章搜索栏目新增“翻译”选项卡 03、所有子窗体字体放大,区分不同版面的用色 04、软件设置页面添加“恢复软件默认设置”选项卡 05、<韵脚大全>页面支持窗体最大化和自定义大小 06、<韵脚大全>页面添加自定义字体大小、颜色选项 07、<韵脚大全>添加右侧快捷按钮板块 2012.02.05    【v3.0.6.0】 01、支持自适应窗体大小以及最大化功能 02、文章标题框自由拉伸并有记忆功能 03、兼容更多文本格式<ansi、unicode编码> 04、文章搜索布局修改成“搜索引擎”样式 05、添加“字体大小”、“文字颜色”的选项卡 06、页面布局调整为“右侧工具栏”,自动感应缩放 07、更换托盘程序代码,添加右键操作菜单 08、关于作者页面添加:头像设置、暧昧短信栏目 09、新增网友诗集并更新部分网友留言 10、修复输入法设置一个小BUG 11、<韵脚大全>页面添加“自行输入韵母”查询功能 2011.10.15    【v2.9】 01、完善托盘代码,修复自动取消/自动切换动作 02、添加批量操作时防卡死功能代码 03、统一所有子窗体输入法设置 04、修改软件回访编码、Image目录图片整理归类 05、广告页面代码整合,添加“天朝乞丐”顺口溜 06、软件关闭时自动修改首页面供下次启动时调用 07、广告、扩展、关于子窗体弹出时不取消主表操作 2011.09.17    【v2.8】 01、更换并优化输入法读取代码,支持Win7系统 02、应网友要求多处文本框字体增大1~2号 03、双击文本内容处边框变化,按Esc还原初始大小 04、添加软件托盘功能,放大操作修改为全屏操作 05、新增<广告>主菜单,增设游戏、赞助等栏目 06、添加代码让其在适当的时候弹出软件帮助页面 07、新增<成语词库联想>页面,进一步完善韵脚查询 2011.08.18    【v2.7】 01、软件开启前弹出 Hello 框,为后续软件统一品牌铺路 02、应网友要求添加可选软件启动时密码登陆功能 03、将非文字类管理页面移除,进一步精简代码 04、软件设置页面图片超级链接添加 Setup_ 参数 05、更换“资源共享”的下载链接,添加少许共享资源 06、修改删除文章快捷键为Ctrl Del,避免按保存时错位 2011.07.02    【v2.6】 01、调整程序后台打开统计页面的次数和间隔时间 02、关于作者、软件更新、友情链接变更访问官网ID 03、全文检索如搜索不到数据则提示是否搜寻网络 04、在分类数据/友情链接未更改的情况下不刷新文章 05、修正在没有记录时,输入一些数据后点删除会出错 06、添加软件记忆功能,开启后显示最后访问的类别 07、文章排序方式改为pr值排序,数值越大排名越靠前 2011.05.26    【v2.5】 01、修正文章页面左侧标题点空白处清除标题BUG 02、文本内容框右键菜单各功能位置调整 03、新增软件后台访问官网功能,以此了解软件使用量 04、<韵脚大全>字库调整窗体底部增加操作提示信息 05、<韵脚大全>菜单“扩展”处新增“字库调整”方便调用 06、<韵脚大全>更新不覆盖韵母数据,界面数据转移 2011.04.07    【v2.4】 01、应网友要求<韵脚大全>添加“同韵四声"查询功能 02、诗词歌赋处添加网友"王茂"21首韵脚诗供大家鉴赏 03、添加<韵脚大全>底部的条件查询信息提示 04、双击韵脚窗口弹出“字库调整”,可自行调整字库 2011.03.18    【v2.3】 01、操作提示信息窗弹出2秒后将自动关闭 02、主窗体控件统一下移9位,使整体布局更显紧凑 03、窗体<资源共享>平台完善各项快捷操作 04、窗体<软件设置>添加总在最前选项 05、窗体<友情链接>添加新浪等文档共享网络地址 06、新增<常用工具>一期,二期可自由添加快捷图标 07、文章数据保存之前判断文件名输入是否规范 08、修正文章内容修改后无法保存以及剪切问题 2011.02.19    【v2.2】 01、软件启动判断是否有草稿/用户设置文件 02、完善<韵脚大全>右键操作/添加数篇相关资料 03、文章放大操作后tab功能键支持/保存后更新日期 04、搜索内容保存到配置文件/完善文件拖放防出错功能 05、窗口页面关闭后才刷新分类与链接,其他窗体忽略 06、添加全局输入法调整/文章标题触碰后变宽设置 07、提供资源共享平台,方便用户自由上传/下载数据 2011.01.26    【v2.1】 01、鼠标触碰左侧“文章标题框"后展开的幅度适当缩小 02、网友留言去除留言状态显示 03、执行文章搜索后立即同步显示相应分类/子类名称 04、修正删除分类后子类链接不能完全转移到回收站 05、修正友情链接管理双击回收站链接访问地址错误 06、将用户设置单独存放到UserSetup配置文件以便保存 07、修正子类为空时搜索/查询数据出错 08、集成诗词写作工具<韵脚大全> 2011.01.18    【v2.0】 01、代码重写实现窗体重用、提供后期扩展性支持 02、添加菜单选项以及高级设置 03、文章标题鼠标放置后变宽(应网友要求) 04、强化文章导入导出功能(导出目录的优化) 05、完善友情链接管理(新增回收站链接管理) 2010.10.31    【v1.8】 01、SQL代码瘦身,不必要的字段不予显示 02、精确子类、文章定位操作 03、导入数据读取目录优化 04、修正放大操作判断键盘有动作后才提示是否保存 05、修正放大操作后文章无法切换是否自动换行 06、去除菜单自动设定的快捷设置 07、丰富菜单选项以及完善快捷操作 08、分类窗口代码中汉字全替换 2010.10.21    【v1.0】 01、自定义多分类、多子类文章类别 02、相应的类别对应各自的友情链接 03、放大操作提供全选、查找、替换、字体更换等功能 04、文章置顶、书签记忆功能查询 05、批量转移分类、子类文章 06、批量修改文章出处、文章作者 07、批量导入/导出文章,支持版权信息输出 08、提供默认输入法设置、软件皮肤更换功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值