.Net通用文件上传类(可上传大文件,本地试过480M)

转载 2011年01月19日 21:49:00

http://www.cnblogs.com/fishtreeyu/archive/2011/01/19/1939286.html

 

.aspx页面

1 <asp:Image ID="imgLogo" runat="server" /><br/>
2 <asp:Label ID="labMsg" runat="server" ForeColor="#CC0000"></asp:Label><br />
3 <asp:FileUpload ID="UploadLogo" runat="server" Width="60%" Height="22px"/>   
4 <asp:Button ID="btnUpload" runat="server" Text=" 上传 " onclick="btnUpload_Click"/>



.aspx.cs页面 

01 // 上传按钮
02 protected void btnUpload_Click(object sender, EventArgs e)
03 {
04     UploadFile uploadFileObj = new UploadFile(); //实例化文件上传类
05     uploadFileObj.MaxFileSize = 100;  // 设置上传文件最大长度,单位K
06     uploadFileObj.FileType = "jpg|jpeg|gif|png"// 设置允许上传的文件类型
07  
08     string uploadPath = Server.MapPath("~/UploadFiles/Other/"); // 设置上传目录全路径
09     uploadFileObj .UploadFileGo(uploadPath, UploadLogo); //文件上传
10     labMsg.Text = uploadFileObj.UploadInfo; // 上传消息提示
11     if (uploadFileObj.UploadState == true)
12     {
13         imgLogo.ImageUrl = "~/UploadFiles/Other/" + uploadFileObj.NewFileName; // 显示图片
14     }
15       
16 }


UploadFile.cs 文件上传类

001 using System;
002 using System.Data;
003 using System.Configuration;
004 using System.Web;
005 using System.Web.Security;
006 using System.Web.UI;
007 using System.Web.UI.WebControls;
008 using System.Web.UI.WebControls.WebParts;
009 using System.Web.UI.HtmlControls;
010 using System.IO;
011   
012 namespace Common
013 {
014     /// <summary>文件上传类</summary>
015     public class UploadFile
016     {
017   
018         #region 字段
019   
020         private string _UploadInfo; // 文件上传的返回信息。
021         private bool _UploadState; // 文件上传的返回状态。
022         private string _FileType; // 允许上传文件的类型。
023         private int _FileSize; // 上传文件的大小,单位B
024         private int _MaxFileSize; // 上传文件大小的最大长度,单位B
025         private string _NewFileName; // 上传后的文件名。
026   
027         #endregion
028   
029   
030   
031         /// <summary>初始文件上传类(默认)</summary>
032         public UploadFile()
033         {
034             _UploadInfo = "NONE";
035             _UploadState = false;
036             _FileType = "*"
037             _MaxFileSize = 1024000;//1000k 即1024*1000b,单位B
038             _NewFileName = "";
039         }
040           
041         #region 属性
042         /// <summary>文件上传的返回信息</summary>
043         public string UploadInfo
044         {
045             set { _UploadInfo = value; }
046             get { return _UploadInfo; }
047         }
048   
049         /// <summary>文件上传的返回状态,成功true,失败false</summary>
050         public bool UploadState
051         {
052             set { _UploadState = value; }
053             get { return _UploadState; }
054         }
055   
056         /// <summary>允许上传文件的类型,* 默认代表可任意类型,或自定义类型,如 "jpg|gif|bmp"</summary>
057         public string FileType
058         {
059             set { _FileType = value; }
060             get { return _FileType; }
061         }
062   
063         /// <summary>上传文件的大小,单位K</summary>
064         public int FileSize
065         {
066             get { return _FileSize / 1024; }
067         }
068   
069         /// <summary>上传文件大小的最大长度,单位K</summary>
070         public int MaxFileSize
071         {
072             set { _MaxFileSize = value * 1024; }
073             get { return _MaxFileSize / 1024; }
074         }
075   
076         /// <summary>上传后的文件名</summary>
077         public string NewFileName
078         {
079             set { _NewFileName = value; }
080             get { return _NewFileName; }
081         }
082   
083         #endregion
084   
085   
086         #region 上传主程序
087         /// <summary>上传本地文件到服务器</summary>
088         /// <param name="strSaveDir">在服务器端保存的物理路径。</param>
089         /// <param name="FileUploadCtrlID">上传的文件对象,这里使用的是FileUpload控件,</param>
090         /// <param>第二个参数如果是HTMl Input(File)控件可改为:HtmlInputFile HtmCtrlObjUploadFile</param>
091         /// <returns></returns>
092         public void UploadFileGo(string strSaveDir, FileUpload FileUploadCtrlID)
093         {
094             int intFileExtPoint = FileUploadCtrlID.PostedFile.FileName.LastIndexOf("."); //最后一个 . 号的位置
095             string strFileExtName = FileUploadCtrlID.PostedFile.FileName.Substring(intFileExtPoint + 1).ToLower(); // 获取上传文件的后缀名。
096   
097             _FileSize = FileUploadCtrlID.PostedFile.ContentLength;//上传的文件大小 byte
098   
099             if (_FileSize == 0) // 判断是否有文件需要上传或所选文件是否为0字节。
100             {
101                 _UploadInfo = "没有选择要上传的文件或所选文件大小为0字节";
102                 _UploadState = false;
103                 return; // 返回文件上传状态和信息。
104             }
105   
106             if (_FileSize > _MaxFileSize) // 限制要上传的文件大小(byte)。
107             {
108                 _UploadInfo = "上传的文件超过限制大小(" + (_MaxFileSize / 1024).ToString() + "K)";
109                 _UploadState = false;
110                 return; // 返回文件上传状态和信息。
111             }
112   
113             if (_FileType != "*")
114             {
115                 if (_FileType.ToLower().IndexOf(strFileExtName.ToLower().Trim()) == -1) // 判断要上传的文件类型的是否在允许的范围内。
116                 {
117                     _UploadInfo = "不允许上传的文件类型(允许的类型:|" + _FileType + ")";
118                     _UploadState = false;
119                     return; // 返回文件上传状态和信息
120                 }
121             }
122   
123             if (_NewFileName == "")
124             {
125                 DateTime dteNow = DateTime.Now; // 定义日期对象,为上传后的文件命名。
126                 _NewFileName = dteNow.Year.ToString() + dteNow.Month.ToString() + dteNow.Day.ToString() + GetRandomStr(8); // 随机地为上传后的文件命名,日期+随机数。
127                 _NewFileName = _NewFileName + "." + strFileExtName; //包含扩展名的文件名
128             }
129             FileUploadCtrlID.PostedFile.SaveAs(this.GetSaveDirectory(strSaveDir) + _NewFileName); // 以新的文件名保存上传的文件到指定物理路径。           
130             _UploadInfo = "文件上传成功"; // 返回上传后的服务器端文件物理路径。
131             _UploadState = true;
132   
133         }
134         #endregion
135   
136   
137   
138         /// <summary>获取指定位数的随机数</summary>
139         /// <param name="RndNumCount">随机数位数。</param>
140         /// <returns></returns>
141         private string GetRandomStr(int RndNumCount)
142         {
143             string RandomStr;
144             RandomStr = "";
145             Random Rnd = new Random();
146             for (int i = 1; i <= RndNumCount; i++)
147             {
148                 RandomStr += Rnd.Next(0, 9).ToString();
149             }
150             return RandomStr;
151         }
152   
153   
154   
155   
156         /// <summary>获取上传文件存放目录</summary>
157         /// <param name="DirectoryPath">存放文件的物理路径。</param>
158         /// <returns>返回存放文件的目录。</returns>
159         public string GetSaveDirectory(string DirectoryPath)
160         {
161             if (!Directory.Exists(DirectoryPath)) // 判断当前目录是否存在。
162             {
163                 Directory.CreateDirectory(DirectoryPath); // 建立上传文件存放目录。
164             }
165             return DirectoryPath;
166         }
167   
168     }
169   
170   
171   
172     #region 附:修改上传大小的配置
173     /*
174     需要修改的是
175     在 C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG目录里,
176     找到文件maxRequestLength="4096"
177     将值修改大一些,例如:102400
178     这个参数的单位应该是KB的
179   
180     以上方法是修改全局的,如果公需要修改一个项目,那么是修改项目里的Web.config文件
181   
182     在<system.web></system.web>之间添加,
183     <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="21000" executionTimeout="300" />
184     其中,
185     maxRequestLength:设置上传文件的最大值,单位:KB。(默认是4096KB,即4M)
186     executionTimeout:设置超时时间,单位:秒。(默认是90秒)
187     */
188     #endregion
189 }

.net 本地文件上传至服务器

好久没写博客了,这里记录一个文件上传的方法
  • PMY_C_L
  • PMY_C_L
  • 2017年06月26日 19:48
  • 917

Web支持可暂停的超大文件上传

代码镇顶:https://github.com/dna2github/petalJS/blob/master/upload 前些天遇到用户需要上传10GB大小以上的文件的需求,查查网上的库,都不好用...
  • prog_6103
  • prog_6103
  • 2015年08月11日 21:48
  • 3436

在ASP.NET MVC中实现大文件异步上传

在ASP.NET中通过HTTP上传大文件是一个由来已久的挑战,它是许多活跃的ASP.NET论坛最常讨论的问题之一,除了处理大文件外,用户还 经常被要求要显示出文件上传的进度,当你需要直接控制从浏览器上...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:21
  • 984

.Net MVC4 上传大文件,并保存表单

1. 前台 cshtml @model BLL.BLL.Product @{     ViewBag.Title = "Add"; } Add ...
  • sust2012
  • sust2012
  • 2014年07月30日 13:15
  • 9794

Asp.net MVC 上传大文件(超过50M)的设置

在上传文件时,比较小的文件会直接上传成功,大的文件页面报错:“文件超过了最大请求长度”。 经过查明: 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedConte...
  • feiying008
  • feiying008
  • 2017年04月10日 15:50
  • 1885

ASP文件上传方式大比拼

无组件方式   1.化境ASP无组件上传 V2.0;     一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件。可第三方...
  • Chinamming
  • Chinamming
  • 2013年05月21日 23:06
  • 1143

大文件分块上传第三弹(分块并发上传)

继上次大文件分块上传原理第二弹见:http://blog.csdn.net/haohao123nana/article/details/54692669,有童靴说前端分片递归上传效率不高,我试了试前端...
  • haohao123nana
  • haohao123nana
  • 2017年08月17日 18:23
  • 417

php使用upload封装类上传文件

index.html name: up pic: up pic: up pic: up pic: upload.php
  • navioo
  • navioo
  • 2016年07月04日 18:07
  • 5703

解决asp.net上传文件时文件太大导致的错误

即使在web.config中添加了节点和设置依然是不行的,还是报文件太大的错误,                   解决方法需要做到以下三个才能解决问题: 1:在web.co...
  • kimizhou_blog
  • kimizhou_blog
  • 2014年03月19日 17:01
  • 4371

ASP.NET中上传大文件到服务器的解决方案

1,环境:window 2003 ,IIS6.0 要首先要修改IIS6.0中的asp请求的最大字节数,默认时为200K; 方法:打开位于 C:/Windows/System32/Inetsrv 中...
  • chen_yanfeng
  • chen_yanfeng
  • 2015年04月01日 10:05
  • 812
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net通用文件上传类(可上传大文件,本地试过480M)
举报原因:
原因补充:

(最多只允许输入30个字)