![](https://csdnimg.cn/release/download_crawler_static/18918405/bg1.jpg)
文章编号:1004 8820(2007)02 0132 04
收稿日期: 2006 03 13
作者简介: 赵金东(1974 ) ,男,山东阳信人,硕士,主要研究方向为计算机软件与理论、 计算机网络与应用.
Web 应 用 中 大 文 件 传 输 问 题 的 研 究
赵金东,于 沛
(烟台大学 计算机学院,山东 烟台 264005)
摘 要: 介绍并研究 HTTP 协议上传文件的机制,给出对 httpmodule 的改进方案,并且提
供具体的.NET 编码示例,以实现通过浏览器上传大文件.最后总结了方案所存在的缺陷
以完善思路.
关键词:Web 应用;文件上传; HTTPMODULE; RFC1867
中图分类号: TP393 文献标识码: A
随着互联网络的发展,各种类型的 Web 应用
越来越多地出现在社会的各个行业,例如常见的
远程教学、远程医疗等.在这些应用中通常会涉及
到文件上传,尽管 FTP 工具可以实现文件上传,
但是这些工具难以集成到 Web 应用内部,而且存
在安全问题.所以,只能通过浏览器使用 Web 上
传
[1,2]
.
使用 Web 上传有三种方式:WebDAV, PUT
和 RFC1867.PUT 方法会失去 HTTP 最大的优势:
服务器可编程性.在 PUT 的情况下,服务器自己
处理请求,没有空间让 CGI 或者 ASP 应用程序介
入,而唯一让应用程序捕获 PUT 的方法是在 ISA-
PI 过滤层实现的.由于上述原因,大多数 Web 开
发者对此不感兴趣.WebDAV 允许 Web 内容的分
布式认证与翻译.它引入了几个新的 HTTP 动词,
允许通过 HTTP 上传,可以将它想象成一种非私
有的配置管理加 Web 文件传输方式.然而,如果
需要在 Web 应用程序里上传文件, WebDAV 就无
能为力了
[1]
.
目前,在 Web 应用中最常用的上传方法就是
使用 RFC1867.然而,在使用这种方式上传文件
时,如果文件超过 2 M,则会在浏览器中显示一个
错误: “ The page cannot be displayed-Cannot find
server or DNS Error”,因为这是客户端错误,服务
器端的应用异常是捕捉不到的.通过分析 Web 应
用的运行机制发现,解决该问题的方法是重写 ht-
tpmodule,优先预系统处理 http 请求
[3]
.
1 HTTP 上传机制
ASP.NET 提供了使用 HTTP Handler 和 HT-
TP Module 扩充 IIS 的功能的方法,这是通过使用
IHttpHandler 和 IHttpModule 接 口 来 实 现 的
[3 ]
.
HTTP Handler 提供了类似于 ISAPI Server Exten-
tion 的功能,而 HttpModule 实现了类似于 ISAPI
Filter 的功能;并且,相对于 ISAPI 而言在开发和
部署上都要简单的多 .应用HttpHandler 和 Http-
Module,使得应用程序可以与 IIS Web 服务器的
低级别请求和响应服务交互.
RFC1867 在表单字段中定义一个新类型<
INPUT TYPE =“ FILE” >,并且在表单本身加入
了不同的编码方案
[4]
,不再使用典型的
<FORM ACTION =“formproc.asp” METHOD
=“POST” >
而是使用
< FORM ACTION =“formproc.asp” METHOD
=“POST ” ENCTYPE =“multipart /form-data” >
当表单提交后, 数据进入 HTTP处理管道 .要