朋友做了asp.net开发多年,做了这个,自我感觉封装得还不错!!! 
代码如下:

  1. #region 上传文件的方法
  2. /// <summary>
  3. /// 上传文件方法
  4. /// </summary>
  5. /// <param name="myFileUpload">上传控件ID</param>
  6. /// <param name="allowExtensions">允许上传的扩展文件名类型,如:string[] allowExtensions = { ".doc", ".xls", ".ppt", ".jpg", ".gif" };</param>
  7. /// <param name="maxLength">允许上传的最大大小,以M为单位</param>
  8. /// <param name="savePath">保存文件的目录,注意是绝对路径,如:Server.MapPath("~/upload/");</param>
  9. /// <param name="saveName">保存的文件名,如果是""则以原文件名保存</param>
  10. private void Upload(FileUpload myFileUpload, string[] allowExtensions, int maxLength, string savePath, string saveName)
  11. {
  12. // 文件格式是否允许上传
  13. bool fileAllow = false;
  14. //检查是否有文件案
  15. if (myFileUpload.HasFile)
  16. {
  17. // 检查文件大小, ContentLength获取的是字节,转成M的时候要除以2次1024
  18. if (myFileUpload.PostedFile.ContentLength / 1024 / 1024 >= maxLength)
  19. {
  20. throw new Exception("只能上传小于2M的文件!");
  21. }
  22. //取得上传文件之扩展文件名,并转换成小写字母
  23. string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
  24. string tmp = "";   // 存储允许上传的文件后缀名
  25. //检查扩展文件名是否符合限定类型
  26. for (int i = 0; i < allowExtensions.Length; i++)
  27. {
  28. tmp += i == allowExtensions.Length - 1 ? allowExtensions[i] : allowExtensions[i] + ",";
  29. if (fileExtension == allowExtensions[i])
  30. {
  31. fileAllow = true;
  32. }
  33. }
  34. if (fileAllow)
  35. {
  36. try
  37. {
  38. string path = savePath + (saveName == "" ? myFileUpload.FileName : saveName);
  39. //存储文件到文件夹
  40. myFileUpload.SaveAs(path);
  41. }
  42. catch (Exception ex)
  43. {
  44. throw new Exception(ex.Message);
  45. }
  46. }
  47. else
  48. {
  49. throw new Exception("文件格式不符,可以上传的文件格式为:" + tmp);
  50. }
  51. }
  52. else
  53. {
  54. throw new Exception("请选择要上传的文件!");
  55. }
  56. }
  57. #endregion

以下是测试的代码:

  1. try
  2. {
  3. string[] ss = { ".jpg", ".gif" };
  4. string path = Request.MapPath("~/upload/");
  5. Upload(FileUpload1, ss, 1, path, "");
  6. Label1.Text = "文件上传成功!";
  7. }
  8. catch (Exception ex)
  9. {
  10. Label1.Text = ex.Message;
  11. }

以前一直没有认真的学习异常处理,今天弄了一下还发现异常处理还蛮好的。。。起码代码量上感觉比if..else..少。。。呵呵。。。

最新文章

  1. Windows常用快捷方式
  2. oracle的decode函数在mysql的实现
  3. 使用spring连接及操作mongodb3.0
  4. 开发人员看测试之运行Github中的JBehave项目
  5. MFC 阶段学习总结
  6. 【CodeVS 3160】最长公共子串
  7. Comparing the Performance of .NET Serializers(zz)
  8. CentOS目录树详细解释
  9. UVa 11468 (AC自动机 概率DP) Substring
  10. JavaScript原型模式
  11. SCXML和QScxml使用总结
  12. C#基础:集合
  13. Spring Boot Document Part II(上)
  14. 异步渲染页面怎么点击checkbox获取value值
  15. [BZOJ1588]营业额统计
  16. TcxGrid标题头 字体加粗
  17. 洛谷P4139 上帝与集合的正确用法 拓欧
  18. 一些 Linux 常用命令说明
  19. day009-IO流
  20. 手把手教你构建 C 语言编译器

热门文章

  1. 图文详解 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
  2. 在Eclipse中开发WEB项目
  3. js中如何获取页面的Url,域名和端口号
  4. Spring Boot 初步小结
  5. Lyft Level 5 Challenge 2018 - Elimination Round翻车记
  6. Django之form表单提交并验证
  7. 【CF600E】Lomsat gelral(dsu on tree)
  8. 【BZOJ3504】危桥(网络流)
  9. (转)搭建本地 8.8 W 乌云漏洞库
  10. 【arc068E】Snuke Line