.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通用大文件上传类

usingSystem; usingSystem.Data; usingSystem.Configuration; usingSystem.Web; usingSystem.Web.Secur...
  • yw1688
  • yw1688
  • 2014年05月12日 17:47
  • 363

ASP.NET 大文件上传组件

  • 2006年02月23日 09:05
  • 39KB
  • 下载

《ASP.NET本质论》大文件上传

在网站中,上传文件到服务器是一个开发中常见的问题。在ASP.NET 2.0中,还提供了一个FileUpload控件,可以更加简单地完成文件上传的工作。但是,在上传一个比较大的文件时,就会发现上传文件失...
  • sky1069
  • sky1069
  • 2011年08月04日 20:00
  • 719

asp.net大文件上传

  • 2011年07月08日 12:06
  • 127KB
  • 下载

asp.net 大文件上传

http://blog.sina.com.cn/s/blog_4a8fbd8901011n6v.html 提前申明,下面的方式是可行的,如果你没搞定,那就怀疑是你哪里搞错了,不要想着是我的错...

asp.net 大文件上传(vs2005版)

  • 2008年09月17日 16:35
  • 57KB
  • 下载

asp.net大文件上传控件

  • 2008年09月11日 14:05
  • 69KB
  • 下载

asp.net下大文件上传知识整理

基于WEB的文件上传可以使用FTP和HTTP两种协议,用FTP的话虽然传输稳定,但安全性是个严重的问题,而且FTP服务器读用户库获取权限,这样对于用户使用来说还是不太方便。 剩下只有HTTP。在HTT...
  • mai0net
  • mai0net
  • 2012年03月04日 13:07
  • 407
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net通用文件上传类(可上传大文件,本地试过480M)
举报原因:
原因补充:

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