且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

文件的上传下载功能的实现(包括进度条)[telerik控件]

更新时间:2022-08-28 22:56:11

文件的上传下载功能的实现(包括进度条)

1、准备工作

首先我们需要Telerik控件,数据库,上传文件文件夹。

Telerik控件:

RadUploadRadProgressManagerRadProgressAresRadGrid

RadUpload是客户端和服务器端的一部分。Upload(上传)控件是一款专门的文件上载组件,它采用非常高效的 Http模型。它消耗最少量的服务器内存却使性能最优化,并提供完全可配置的单一文件上载或多文件上载

 可以设置上传模式,如手动、自动,可以同时上传多个文件,可以设置最大文件数、最大上传大小、最大文件大小、允许上传的图片类型等。

 具有事件跟踪功能,对上传控件的各种操作均会显示出来。

RadProgressMangerRadProgressAres控件的使用方法只需要将这两个控件拖放在网页设计器中即可,而RadProgressMangerRadProgressAres控件与RadUpload控件的关联方法只需要在Web.config中配置即可,方法在下面文章中可以找到。

数据库(T_File):

主要用于存储文件ID、文件名字Name、文件路径Path、文件上传时间Time

文件的上传下载功能的实现(包括进度条)[telerik控件]

文件存放处:

创建一个Upload文件夹。

2、页面制作及后台代码。

创建一个UpLoad.aspx页面

文件的上传下载功能的实现(包括进度条)[telerik控件]

RadProgressMangerRadProgressAres控件只需拖放在此处即可。

后台代码如下:

文件的上传下载功能的实现(包括进度条)[telerik控件]

创建一个DownLoad.aspx页面

文件的上传下载功能的实现(包括进度条)[telerik控件]

文件的上传下载功能的实现(包括进度条)[telerik控件]

后台代码如下:(主要用来绑定数据展现操作)

文件的上传下载功能的实现(包括进度条)[telerik控件]

我们需要再创建一个一般处理程序Down.ashx

文件的上传下载功能的实现(包括进度条)[telerik控件]

Web.config中的配置

<configuration>

 <system.web>

   <compilationdebug="true"targetFramework="4.0">

     <assemblies>

       <addassembly="System.Design,Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

       <addassembly="System.Windows.Forms,Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

       <addassembly="System.Speech,Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

     </assemblies>

   </compilation>

   <httpHandlers>

     <addpath="Telerik.RadUploadProgressHandler.ashx"type="Telerik.Web.UI.RadUploadProgressHandler"verb="*"validate="false" />

     <addpath="Telerik.Web.UI.WebResource.axd"type="Telerik.Web.UI.WebResource"verb="*"validate="false" />

    </httpHandlers>

       <httpModules>

         <addname="RadUploadModule"type="Telerik.Web.UI.RadUploadHttpModule,Telerik.Web.UI" />

        </httpModules>

     <httpRuntimemaxRequestLength="2097151"executionTimeout="3600" />

     <authenticationmode="Forms" />

 </system.web>

 <system.webServer>

   <modulesrunAllManagedModulesForAllRequests="true" />

   <validationvalidateIntegratedModeConfiguration="false" />

   <handlers>

     <addname="Telerik_Web_UI_DialogHandler_aspx"verb="*"preCondition="integratedMode"path="Telerik.Web.UI.DialogHandler.aspx"type="Telerik.Web.UI.DialogHandler" />

     <addname="Telerik_Web_UI_SpellCheckHandler_axd"verb="*"preCondition="integratedMode"path="Telerik.Web.UI.SpellCheckHandler.axd"type="Telerik.Web.UI.SpellCheckHandler" />

     <addname="Telerik_Web_UI_WebResource_axd"verb="*"preCondition="integratedMode"path="Telerik.Web.UI.WebResource.axd"type="Telerik.Web.UI.WebResource" />

   </handlers>

 </system.webServer>


3、在开发中遇到的问题

1)、IIS请求筛选模块被配置为拒绝超过请求内容长度的请求

文件的上传下载功能的实现(包括进度条)[telerik控件]

解决方法

1. 修改IISapplicationhost.config

    1.文件位置:%windir%/system32/inetsrv/config/applicationhost.config

    2.找到<requestFiltering> 节点

    3.为这个节点添加如下元素:<requestLimits maxAllowedContentLength="2147483647"/> (上传的大小将改为2G)

注:该节点下默认没有 <requestLimits maxAllowedContentLength="上传大小的值" /> 元素。

2. web.config中添加如下内容

 <configuration>

   <system.web>

      <httpRuntimemaxRequestLength="2097151" executionTimeout="3600"/>

   </system.web>

 </configuration>

代码说明:
1
httpRuntime配置ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求。在这里这个是必须要有的。
2
maxRequestLength(指示ASP.NET 支持的最大文件上载大小)
指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。
默认值为 4096K(4 MB),最大值只能是2097151K
3
executionTimeout:指定在被ASP.NET 自动关闭前,允许执行请求的最大秒数。默认90秒。
只有当compilation 元素中的调试属性为 False 时,此超时属性才适用。若要帮助避免在调试期间关闭应用程序,请不要将此超时属性设置为较大值。

3. web.config中,把以下内容加在<system.webServer>节点

<security>

  <requestFiltering >

      <requestLimitsmaxAllowedContentLength="2147483647" ></requestLimits>

   </requestFiltering>

 </security>


上述中maxAllowedContentLengt是以KB为单位。

2)、RadUpload Ajax callback error.Source url returned invalid content

文件的上传下载功能的实现(包括进度条)[telerik控件]

暂未解决,等待处理。



本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/1218188,如需转载请自行联系原作者