ASP.NET上传大文件

上网下一个neatupload 1.2.32的压缩包:(附压缩包)
准备:
将压缩包中的Brettle.Web.NeatUpload.dll、Brettle.Web.NeatUpload.HashedInputFile.dll、Hitone.Web.SqlServerUploader.dll三个文件放到项目的Bin目录下(不确定这三个文件是否全都要用上,不管了,都用是没错的),然后对这三个文件添加引用.
将压缩包中的NeatUpload文件夹复制到项目的根目录下.
添加工具箱->选择项->浏览->选择刚复制的Brettle.Web.NeatUpload.dll文件,工具箱中就将添加相应的工具了.我测试用了两个:InputFile和ProgressBar.
修改Web.config文件
<configuration>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="neatUpload" type="Brettle.Web.NeatUpload.ConfigSectionHandler, Brettle.Web.NeatUpload" allowLocation="true" /> <!-- NeatUpload添加配置(第一处) -->
</sectionGroup>
</configuration>
<system.web>
<httpModules>
<add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" /> <!-- NeatUpload添加配置(第二处) -->
</httpModules>
</system.web>
测试:
前台:
<head runat="server">
<title>上传测试</title>
<script type="text/javascript">
function ToggleVisibility(id,type){
var 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" />
<asp:Button ID="Upload" runat="server" Text="Upload" OnClientClick="ToggleVisibility('ProgressBar','on')" OnClick="Upload_Click" />
<div id="ProgressBar">
<upload:progressbar ID="pbProgressBar" runat='server' Inline="true" Width="280px" Height="50px">
</upload:progressbar>
</div>
</div>
</form>
</body>
后台:
protected void Upload_Click(object sender, EventArgs e)
{
string FileName = this.AttachFile.FileName;//获取上传文件的全路径
string ExtenName = System.IO.Path.GetExtension(FileName);//获取扩展名
string SaveFileName = System.IO.Path.Combine(Request.PhysicalApplicationPath + "/UpLoadFiles/DownLoads", DateTime.Now.ToString("yyyyMMddhhmm") + ExtenName);//合并两个路径为上传到服务器上的全路径
if (this.AttachFile.ContentLength > 0)
{
try
{
this.AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
}
catch (Exception ex)
{
throw ex;
}
}
}
运行页面,OK.
[img]http://dl.iteye.com/upload/attachment/577772/e28c42cc-dc9a-3107-bb05-1bbfa795bb34.png[/img]
测试这种方法可行,如何进行多个文件上传呢,进一步测试:
前台:
<script type="text/javascript">
function ToggleVisibility(classNameOne,type){
var el = [],allElements = document.getElementsByTagName('div');
for (var i=0; i< allElements.length; i++ )
{
if (allElements[i].className == classNameOne ) {
el.concat = allElements[i];
}
}
for (var j=0;j<el.length;j++)
{
if (el[j].style){
if (type=='on'){
el[j].style.display='block';
}
else{
el[j].style.display='none';
}
}
else{
if (type=='on'){
el[j].display='block';
}
else{
el[j].display='none';
}
}
}
}
</script>
......
<tr>
<td>上传文件包(供阅读使用 .zip包)</td>
<td>
<Upload:InputFile ID="InputFile2" runat="server" />
<div class="ProgressBar"><Upload:ProgressBar ID="ProgressBar1" runat='server'></Upload:ProgressBar></div>
</td>
</tr>
<tr>
<td>上传文件包(供下载使用 .rar包)</td>
<td>
<Upload:InputFile ID="InputFile1" runat="server" />
</td>
</tr>
后台:
//处理供下载的文件(上传到DownLoads文件夹中)
string BookDownFileName = "#";
string FileName = this.InputFile1.FileName;//获取上传文件的全路径
string ExtenName = System.IO.Path.GetExtension(FileName);//获取扩展名
if (sysData.GetExtend(FileName) != "rar")
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('上传的文件必须是.rar的压缩包!');</script>");
return;
}
string NewFileName = DateTime.Now.ToString("yyyyMMddhhmm") + ExtenName;
BookDownFileName = "/UpLoadFiles/DownLoads/" + NewFileName;
string SaveFileName = System.IO.Path.Combine(Request.PhysicalApplicationPath + "/UpLoadFiles/DownLoads", NewFileName);//合并两个路径为上传到服务器上的全路径
if (this.InputFile1.ContentLength > 0)
{
try
{
this.InputFile1.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
}
catch (Exception ex)
{
throw ex;
}
}
//电子杂志(在线阅读使用)
string InputMagazineName = this.InputFile2.FileName;
if (sysData.GetExtend(InputMagazineName) != "zip")
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('上传的杂志必须是扩展名为.zip的压缩包!');</script>");
return;
}
string FolderName = InputMagazineName.Substring(0, InputMagazineName.LastIndexOf("."));
string MagazineName = FolderName + ".zip";
if (this.InputFile2.ContentLength>0)
{
try
{
this.InputFile2.MoveTo( System.IO.Path.Combine(Request.PhysicalApplicationPath + "/UpLoadFiles", InputMagazineName), Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
}
catch (Exception ex)
{
throw ex;
}
}
运行页面,Ok.
[img]http://dl.iteye.com/upload/attachment/577774/f77d93bc-fc65-3fab-aa86-bd2f693f7e1e.png[/img]
问题:项目的中上传进度条会在一个弹出的小窗口中显示,没找到修改CSS的地方.现就是上传到服务器后,弹出的进度条小窗口不会自动关闭.
参考:http://www.cnblogs.com/langlang/archive/2009/12/11/1621730.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值