ASP.NET对大文件上传的解决方案
首先,我们需要下载这个名为RanUpLoad的组件。
下载完成之后,两个dll文件添加到项目的引用中区,xml文件也要复制在项目中的bin文件夹下,也就是最后三个文件都要存在于bin文件夹中。
接着,上传控件还是用ASP.NET中自带的FileUpload控件,需要添加的就是在FileUpload控件旁边加入标签:
<radU:RadProgressManagerID="Radprogressmanager1"Width="100%"runat="server"/> <radU:RadProgressAreaID="progressArea1"Width="100%"runat="server"> </radU:RadProgressArea>
并且在aspx文件的起始处添加如下代码:
<%@RegisterTagPrefix="telerik"Namespace="Telerik.QuickStart"Assembly="Telerik.QuickStart"%> <%@RegisterTagPrefix="radU"Namespace="Telerik.WebControls"Assembly="RadUpload.Net2"%>
当然,配置文件的<system.web>标签中不能忘记下面这些语句:
<httpRuntimeexecutionTimeout="3600"maxRequestLength="2097151"></httpRuntime> <httpModules> <addname="RadUploadModule"type="Telerik.WebControls.RadUploadHttpModule,RadUpload.Net2"/> </httpModules> <httpHandlers> <addverb="*"path="Telerik.RadUploadProgressHandler.aspx"type="Telerik.WebControls.RadUploadProgressHandler,RadUpload.Net2"></add> </httpHandlers>
现在,外部的轮廓都已经布好了,接下来就是点击上传之后服务器端所需的操作:
当然,做这些操作之前,我们先using一下Telerik.WebControls命名空间。
//检查文件 if(RadUploadContext.Current==null){return;} if(RadUploadContext.Current.UploadedFiles.Count<=0) { this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(),"MsgBox","<script>alert('请选择上传文件!')</script>"); return; } if(RadUploadContext.Current.UploadedFiles[0].ContentLength>=2147483647) { this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(),"MsgBox","<script>alert('上传的文件不得超过2GB!')</script>"); return; } UploadedFilefile=RadUploadContext.Current.UploadedFiles[0]; stringfileName=Path.GetFileName(file.FileName); stringvirtualPath=System.IO.Path.Combine("~/save",fileName); stringsavePath=this.MapPath(virtualPath); file.SaveAs(savePath,true);
至此,文件上传的处理工作已经完成,以上的cs代码是我自己的一些操作处理,大家可以根据自己情况酌情修改,比如也可以放置多个FileUpload控件,
用foreach(UploadedFilefileinRadUploadContext.Current.UploadedFiles){...} 这样的方式处理多个文件的上传。
希望此篇文章可以帮助对大文件上传头疼的朋友们去轻松处理上传问题。