NeatUpload大文件上传带进度条显示组件
NeatUpload解决Asp.net中大文件上传的问题的组件,支持进度条显示、上传过程中取消
步骤如下:
1,在工具箱中添加Brettle.Web.NeatUpload.dll,方法:打开VS2008/2010--->点击'工具箱'--->选中一项,如:'常规'这项--->单击右键--->在弹出的菜 单中选'选择项'--->在弹出的窗口中选择'浏览'--->找到'Brettle.Web.NeatUpload.dll'这个文件 --->按确定就添加上了,这时工具箱中多出几个控件出来,有InputFile,progressbar 等,我们主要用这两个.
2.复制文件夹NeatUpload到根目录.
3.拖放使用上传控件InputFile和进度条ProgressBar
4、添加上传文件的按钮.aspx页面代码如下:
<upload:inputfile id="FileUpload1" runat="server"></upload:inputfile>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Upload" OnClientClick="ToggleVisibility('ProgressBar','on')" />
<div id="ProgressBar" style="display: none;">
<upload:progressbar id="pbProgressBar" runat="server" inline="true" width="500px" BackColor="Blue"
height="100">
</upload:progressbar>
5.添加脚本代码ToggleVisiblity函数到页面上如下:
<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>
6、后台代码:
protected void Button1_Click(object sender, EventArgs e)
{
//上传
if (Page.IsValid)
{
string url = "upload";
string path = Server.MapPath(url);
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
string FileName = this.FileUpload1.FileName;//获取上传文件的全路径
string ExtenName = System.IO.Path.GetExtension(FileName);//获取扩展名
string SaveFileName = "upload/" + GetNewFileName() + ExtenName;//合并两个路径为上传到服务器上的路径
if (this.FileUpload1.ContentLength > 0)
{
try
{
this.FileUpload1.MoveTo(Server.MapPath(SaveFileName), Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
/// <summary>
/// 获取名字
/// </summary>
/// <returns></returns>
private string GetNewFileName()
{
string resultStr = string.Empty;
DateTime dt = DateTime.Now;
resultStr = dt.ToString("yyyyMMddHHmmss") + dt.Millisecond.ToString();
return resultStr;
}
7、在配置文件web.config中添加http模块声明: <httpModules>
<add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" />
</httpModules>