在常见的B/S模式下企业级架构中上传文件是一个常见业务操作.在.NET 1.1版本是只有对应的客户端HTML版本的Input<Type="File">,在.NET2.0版本添加进来了服务器端的FileUpload控件.

其实考虑在设计这个控件时为了保证.NET安全机制.默认设置是文件上传的大小是2M. 当然可以通过修改系统的Web.Config配置文件达到4M. 其实相对而言Fileupload是一把双刃剑.使用时扬长避短是很重要的.

开发者应该了解的是,之所以默认的文件大小上限为4MB,并不是因为当时的设计人员灵光一现,而是为了避免潜在DOS***危险。若是***者提交了一个或多个大文件,往往会让服务器不堪重负。若是用户上传的文件大于4MB,将会得到“Maximum request length exceeded.”异常信息. 当然这些就涉及到Asp.net平台下大文件上传的问题作为下一节讨论并实现. 本章主要实现的是利用Asp.net中FileUpload控制的一些基本操作.

最近装上VS2010 Beta2版本. NET FrameWork 4.0.(关系不大)试用一下.以下的项目编码都在该环境下运行.

(A):简单文件上传操作 页面代码:

  1. --前台一个上传控件  接着是一个上传按钮
  2. <asp:FileUpload ID="FileUpload5" runat="server" Width="475px"></asp:FileUpload>
  3. <asp:Button ID="TestFileType" runat="server" Text="上传文件-判断文件类型"
  4. οnclick="TestFileType_Click" OnClientClick="CheckFileType()" ></asp:Button>

后台Button时间操作代码:

  1. //向服务器上传文件-BasicOperatorDemo(基本操作演示) -最简单操作
  2. //Author:chenkai Date:2009年11月10日14:22:36
  3. protected void bt_upload_Click(object sender, EventArgs e)
  4. {
  5. try {
  6. if (FileUpload1.PostedFile.FileName == "")
  7. {
  8. this.lb_info.Text = "请选择您要上传的文件!";
  9. }
  10. else
  11. {
  12. string filepath = FileUpload1.PostedFile.FileName.ToString();
  13. string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
  14. string serverpath = HttpContext.Current.Server.MapPath("Images/") + filename;
  15. //保存到服务器上   判断文件目录是否存在
  16. if (File.Exists(serverpath))
  17. {
  18. FileUpload1.SaveAs(serverpath);
  19. this.lb_info.Text = "文件上传成功!";
  20. }
  21. else
  22. {
  23. //创建保存目录
  24. File.Create(serverpath);
  25. }
  26. }
  27. }
  28. catch (Exception se)
  29. {
  30. this.lb_info.Text = "上传过程发生错误!错误原因:" + se.ToString();
  31. }
  32. }

再次逐步的提高要求: A:限制客户端上传文件的文件类型. 只能上传制定的.JPG/.Jpeg/.chm 3种类型的文件. 客户端验证模式:

  1. <Script language="JavaScript" Type="JS/Text">
  2. //定义一个客户端JS函数来判断上传文件的类型 在Button onClintClick事件调用
  3. function CheckFileType() {
  4. //尽然可以直接调用服务器端控件
  5. var str = document.getElementById("FileUpload5").value;
  6. alert(str);
  7. var pos = str.lastIndexOf(".");
  8. var lastname = str.substring(pos,str.length)
  9. if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif")
  10. {
  11. alert("您上传的文件类型为"+lastname+",图片必须为.jpg,.gif类型");
  12. return false;
  13. }
  14. else
  15. {
  16. return true;
  17. }
  18. }
  19. </Script>

上传制定文件类型服务器端验证模式:

  1. /// <summary>
  2. /// 检测真正的上传文件类型数据
  3. /// Author:chenkai  Date:2009年11月11日10:44:26
  4. /// </summary>
  5. public bool CheckClintFileType(FileUpload getfile)
  6. {
  7. //获得数据
  8. System.IO.FileStream getstream=new FileStream(getfile.FileName,FileMode.Open,FileAccess.Read);
  9. System.IO.BinaryReader getreader = new BinaryReader(getstream);
  10. string fileclass = string.Empty;
  11. byte buffer;
  12. try
  13. {
  14. //读取的文件流转化成二进制文件
  15. buffer = getreader.ReadByte();
  16. fileclass = buffer.ToString();
  17. //再次叠加

转载于:https://blog.51cto.com/chenkai/765300

Asp.net中关于上传文件的各项基本操作相关推荐

  1. html中异步上传文件实现示例,HTML_html中异步上传文件实现示例,复制代码代码如下: form actio - phpStudy...

    html中异步上传文件实现示例 复制代码代码如下: 复制代码代码如下: 这是html中最常见最简单的表单提交方式,但是这种方式必须会切换页面,也许有些时候我们希望可以在同一个页面与服务器进行交互,并不 ...

  2. ASP.NET跨服务器上传文件的相关解决方案

    ASP.NET跨服务器上传文件的相关解决方案 参考文章: (1)ASP.NET跨服务器上传文件的相关解决方案 (2)https://www.cnblogs.com/zuowj/p/3999798.ht ...

  3. 阿里云存储OSS中设置上传文件content type

    阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...

  4. 利用ASP.NET向服务器上传文件[转]

    文件上传技术是一个很实用的技术,有着很广泛的应用,在ASP.NET自身的前一个版本ASP里实现这个功能,就必须使用第三方的组件或者自己开发组件了,现在,用ASP.NET实现起来就简单得多了,我们不需要 ...

  5. asp实现无组件上传文件原理

    一.上传网页     上传页面代码: <form   action="upload.asp"   method="post"   enctype=&quo ...

  6. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...

    HTML文件表单,接受Word文档(HTML file form, accept Word documents) 我在这里遇到了一个奇怪的问题. (不管怎样,或者我只是忽略了一些非常简单的东西.) 我 ...

  7. ASP.NET 无刷新上传文件

    这些天一直在做一个无刷新的文件上传功能,现在也总算是做好.可以说是是几经波折吧,开始一直想用AJAX的思路去实现,没想到费了很多时间最后还是徒劳!用ADODB.STREAM 应该也是可以把表单的文件P ...

  8. asp.net mvc 实现上传文件带进度条

    本文乃是博主早期写的,此种思路虽然实现了,但固然不是最好的,仅做参考学习. 可以用js onprogress .fileinput .webuploader.jq ajaxsubmit等实现 思路:a ...

  9. Teams中阻止上传文件--详解

    之前在另外一篇文章中谈到过如何阻止向Office 365中上传文件,但是针对于Teams的文件上传没有详细介绍过. 这里首先让大家知道两个概念: Teams本身不止是一个软件在独立运行,后面包含了很多 ...

最新文章

  1. ECSHOP学习笔记
  2. linux下文件字符集转化实战篇
  3. Notepad++快捷键使用技巧
  4. 『计算机视觉』YOLO系列总结
  5. php获取ip几种方法区别,php获取客户端IP地址的几种方法
  6. 涵盖 14 大主题!最完整的 Python 学习实例集来了!
  7. 网站二次开发如何防止别人打包源码_面试官:你说你对Kafka比较熟?看过源码吗?...
  8. asp.net core 自定义 Policy 替换 AllowAnonymous 的行为
  9. 专为小机械迷而造,培养STEM思维,千万别错过!物理机械力学知识边玩边学,5岁以上请入手...
  10. LeetCode 395. 至少有K个重复字符的最长子串(分治)
  11. 添加 XmlDocument 元素 和 属性
  12. android 巧用动画使您app风骚起来
  13. linux下硬盘安装ubuntu,Ubuntu硬盘安装
  14. 翻译:MySQL Got an Error Reading Communication Packet Errors
  15. 熟悉scrapy的基本使用(创建与运行,目录结构)---爬虫项目
  16. Hive函数collect_set、concat_ws、concat、if
  17. 节奏大师小游戏unity实现
  18. 行业解决方案】高速公路供配电监控系统-安科瑞 周莉娜
  19. 数据库多表联查的方式
  20. 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势

热门文章

  1. webstorm 10.0.4 注册码
  2. xpath的一些测试
  3. 【翻译】在ruby中实现attributes的lazily initialization(惰性初始化)
  4. arduino使用oled代码_如何做一个Arduino无线气象站
  5. Lucene 和 Elastic
  6. Go 每日一库之 zap
  7. centos 安装openoffice (办公软件 WPS)
  8. 总结一下切换git地址 重合代码的过程
  9. Java高并发编程详解系列-线程安全数据同步
  10. 邮箱不可用 550 User has no permission