大文件上传解决办法

大文件上传解决办法
2010年07月14日
  [b]概述:
  [/b]SlickUpload是一款能够显示进度条和状态信息的ASP.NET上传组件。SlickUpload能够在ASP.NET处理上传文件之前截获请求,把上传的文件流直接转至硬盘上或数据库系统。它使用Ajax技术能够把上传的信息实时显示给用户。
  [b]为什么使用SlickUpload?[/b]
  SlickUpload提供好的上传功能远远大于ASP.NET内置的上传功能:
  [b]1.ASP.NET中上传文件的时候会把上传的文件全部加载到服务器内存中,而SlickUpload直接把上传文件流写入硬盘或数据库。
  2.上传进度条能够实时显示文件上传的进度状态。
  3.SlickUpload高度的可自定义性,可以允许我们在上传过程中加入其它的业务逻辑
  4.支持web farm和web garden[/b]
  (车延禄)
  [b]服务器端架构[/b]
  SlickUpload的核心是它的HttpUploadModule模块。HttpUploadModule是.NET中HTTP请求处理管道中的一个HttpModule,它在ASP.NET的HTTPHandler之前被触发。这使SlickUpload在上传文件时能够在ASP.NET处理之前上传过程之前,进行一些灵活处理,并提供给用户丰富的上传进度信息。
  [b]1.客户端初始化上传请求
  2.IIS接收请求并把请求传递给ASP.NET
  3.ASP.NET接收到请求
  4.在ASP.NET处理程序接收到请求之前,SlickUpload截获该上传请求。
  5.SlickUpload把接收到的请求,以流的方式写入数据存储设备。SlickUpload支持两种数据存储设备:文件系统和SqlServer数据库。
  6.当SlickUpload处理请求的时候,客户端可以接收到处理进度
  7.SlickUpload完成请求处理
  8.ASP.NET继续处理除了上传数据之外的请求,因为上传数据流的信息已被SlickUpload写入到数据存储设备中去了。[/b]
  [b]客户端架构[/b]
  SlickUpload有一个非常灵活的客户端架构。我们可以使用SlickUpload内建控件,如UploadManager来作为上传界面,也可以使用上传控件和javascript实现完全自定义的上传页面。
  (车延禄)
  [b]安装SlickUpload[/b]
  [b]一、安装程序集[/b]
  在项目中添加对Krystalware.SlickUpload.dll程序集的引用,此过程会向项目文件夹中复制该程序集。这个程序集中包含SlickUpload的HttpModule和SlickUpload控件集。
  [b]二、在项目的web.config配置文件中添加下列配置信息
  [/b] 要使SlickUpload能够正常工作,我们需要对项目的web.config文件进行如下五处配置:
  [b]1.configSections配置节:
  [/b] 在配置节中注册SlickUpload配置信息。代码如下:
  
  
  
  
  
  
  
  [b]2.slickUpload配置节:[/b]
  该配置节为SlickUpload配置上传设置。该示例代码配置上传文件保存至C:\somefolder\文件夹中,如果文件已存在则覆盖它。
  代码如下:
  [b] [/b][b]
  
  
  [/b] [b] 3.system.web/httpModules配置节:
  [/b] 配置HTTPModule节,注册 SlickUpload的HttpUploadModule模块。代码如下:
  [b]
  
  [/b][b]
  [/b] [b] 4.system.web/httpHandlers配置节:
  [/b] 要实现Ajax进度显示和UploadManager控件的功能,我们需要为项目添加SlickUpload的HttpHandlers。代码如下:
  [b] [/b][b]
  
  
  [/b] [b] 5.system.web/httpRuntime配置节:
  [/b] 在这个配置节中有两个属性,需要设置,以支持大文件上传。
  [b]maxRequestLength:[/b]允许上传的最大的字节数。单位:KB
  [b]executionTimeout:[/b]上传的最大延迟时间。单位:秒
  [b]
  [/b] (车延禄)
  [b]注:配置元素[/b]
  这个配置元素用来定义SlickUpload上传流在服务器端的存储设置。它包含文件系统、数据库和自定义三种存储提供程序,它是通过provider属性进行设置的。
  [b] 1.文件提供程序:上传文件到文件系统中
  [/b] [b]provider[/b]="File"
  [b]location[/b]:必填属性,String型属性。指定上传文件在服务器端的存储路径。支持~/ application格式的路径。
  [b]existingAction[/b]:可选属性,指定如果目标文件已存在时,SlickUpload上传时如何处理。
  Exception-抛异常,结束上传,这是默认设置
  Overwrite-覆盖已存在文件
  Rename-在文件名的后面自动追加一个数字后缀。
  [b]fileNameMethod[/b]:可选属性,指定上传到服务器的文件如何命名
  Client-使用客户端的名子命名,这是默认设置
  Guid-产生唯一的Guid为文件命名
  Custom-使用一个IFileNameGenerator型的类,在fileNameGenerator属性中指定产生的文件名
  [b]fileNameGenerator[/b]:可选属性,指定一个类名,指定一个实现IFileNameGenerator接口的类,当fileNameMethod被设置为Custom时,该类会被自动加载运行。
  [b] 2.数据库提供程序:将上传的文件写入数据库中
  [/b] [b]provider[/b]="SqlClient"
  [b]connectionString[/b]:必填属性,字符串型。指定连接SqlServer数据库的连接字符串。
  [b]table[/b]:必填属性,字符串型。指定写入到哪一个表中去。
  [b]keyField[/b]:必填属性,字符串类型。指定目标表的主键字段名。
  [b]dataField[/b]:必填字段,字符串型。指定目标表中容纳上传文件的字段名。
  [b]fileNameField[/b]:可选属性。指定目标表中保存文件名的字段名称。
  [b]criteriaMethod[/b]:可选 属性,CriteriaMethod类型
  Identity-设置主键字段为自增长列,这是默认设置
  Custom-使用ICriteriaGenerator型的对象,在criteriaGenerator属性中生成主键值。
  [b]criteriaGenerator[/b]:可选属性,指定一个类名。指定一个实现ICriteriaGenerator接口的自定义类,当criteriaMethod属性被设置为Custom时,会加载此类。
  (车延禄)
  [b]三、向VS.NET中加入SlickUpload控件[/b]
  [b] 在工具箱中空白处右击,“选择项”->“.Net框件组件”选项卡->“浏览”,打开Krystalware.SlickUpload.dll程序集,点击确定[/b]。会发现SlickUpload控件已经被加载到工具箱了。
  SlickUpload控件包含[b]UploadManager, ProgressElement, ProgressBarElement, ProgressDisplay, and UploadManagerRequiredFileValidator
  [/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值