转自: http://blog.csdn.net/dotnet_2007/article/details/1810503
由于他给的案例中,比较杂乱,自己整理了一下。
下载地址如下:
http://download.csdn.net/detail/vincent_void/4369120
一般10M以下的文件上传通过设置Web.Config,再用VS2005自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了,这时可以用NeatUpload来上传,步骤如下:
1,在工具箱中添加Brettle.Web.NeatUpload.dll,这个应该会怎样添加吧,我还是说一下吧,刚开始用自定义控件的时候我也不会 ^_^,方法:打开VS2005--->点击'工具箱'--->选中一项,如:'常规'这项--->单击右键--->在弹出的菜单中选'选择项'--->在弹出的窗口中选择'浏览'--->找到'Brettle.Web.NeatUpload.dll'这个文件--->按确定就添加上了,这时工具箱中多出几个控件出来,有InputFile,progressbar 等,我们主要用这两个.
2.复制文件夹NeatUpload到根目录.
3.拖放使用上传控件InputFile和进度条ProgressBar,添加上传文件的按钮.aspx页面代码如下:
<% @ Register Assembly = " Brettle.Web.NeatUpload " Namespace = " Brettle.Web.NeatUpload "
TagPrefix = " Upload " %>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > upload </ title >
< script type = " text/javascript " language = " javascript " >
function ToggleVisibility(id, type)
{
el = document.getElementById(id);
if (el.style)
{
if (type == ' on ' )
{
el.style.display = ' block ' ;
}
else
{
el.style.display = ' none ' ;
}
}
else
{
if (type == ' on ' )
{
el.display = ' block ' ;
}
else
{
el.display = ' none ' ;
}
}
}
</ script >
</ head >
< body >
< form id = " form1 " runat = " server " >
< div >
< upload:InputFile id = " AttachFile " runat = " server " ></ upload:InputFile >
< asp:Button ID = " Upload " runat = " server " Text = " 上传 " OnClientClick = " ToggleVisibility('ProgressBar','on') " OnClick = " Upload_Click " />
< div id = " ProgressBar " style = " display:none; width:auto; " >
< upload:progressbar id = " pbProgressBar " runat = " server " Inline = " true " Width = " 500px " Height = " 35px " Triggers = " Upload " > </ upload:progressbar >
</ div >
</ div >
</ form >
</ body >
</ html >
4.给上传按钮添加Upload_Click事件:
{
if (AttachFile.HasFile)
{
string FileName = this .AttachFile.FileName; // 获取上传文件的文件名,包括后缀
string ExtenName = System.IO.Path.GetExtension(FileName); // 获取扩展名
string SaveFileName = System.IO.Path.Combine(System.Web.HttpContext.Current.Request.MapPath( " UpLoads/ " ), DateTime.Now.ToString( " yyyyMMddhhmm " ) + ExtenName); // 合并两个路径为上传到服务器上的全路径
AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
string url = " UpLoads/ " + DateTime.Now.ToString( " yyyyMMddhhmmss " ) + ExtenName; // 文件保存的路径
float FileSize = ( float )System.Math.Round(( float )AttachFile.ContentLength / 1024000 , 1 ); // 获取文件大小并保留小数点后一位,单位是M
}
}
5.注意,要还在Web.Config里进行设置:
在<system.web>中添加以下代码:
< add name = " UploadHttpModule " type = " Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload " />
</ httpModules >
最后这里是上面需要的文件和dll文件的源代码以及怎样用的例子
Brettle.Web.NeatUpload.dll源代码
NeatUpload文件夹