发信人: HAX(青蛙王子), 信区: WebDevelop
标 题: 关于基于Form的多文件上载
发信站: 饮水思源 (2002年12月30日13:40:54 星期一), 站内信件
一个典型的基于form的文件上载页面如下:
<html>
<head>
<title>文件上传</title>
<form action="/upload" method="post" enctype="multipart/form-data">
<input name="file0" type="file" />
<input type="submit" />
</form>
</body>
</html>
产生的页面包括一个input框和一个浏览按钮,点击浏览按钮后会弹出一个
系统对话框让你选择本地文件。
然而在IE浏览器中,有一个很大的限制就是,一次只能选一个文件。
Mozilla也是如此。
其实根据w3c的html规范,是容许一个form包含多个提交文件的,然而
由于浏览器的限制,目前多数webapp只能依靠脚本生成多个file field
来实现多文件上传。
例如:
<form...>
<input name="file1" type="file" />
<input name="file2" type="file" />
...
</form>
据我所见,只有Opera可以在一个file field中提交多个文件,但也不支持
提交整个目录。
不得已,我们必须使用一些替代手段:
1. FTP
FTP的问题在于我们必须让用户使用一种不同于浏览器网页的环境。当然现在
有许多FTP Client跟资源管理器非常类似。另一个大问题是,在网站上通过
一些手段验证了用户的身份之后,无法传递给ftp。ftp的用户验证是独立的。
并且ftp的安全性虽然跟一般的基于form或者HTTP的Basic验证的安全性类似,
但无法达到HTTP的Digest验证乃至SSL的水准。
2. WebDAV
WebDAV是HTTP协议的扩展,因此比ftp有很多优点。不过也有问题就是WebDAV
的客户端与浏览器的结合还不是很理想,尽管IE可以以“打开Web文件夹”的
方式打开WebDAV目录。
3. ActiveX或者Applet的上传组件。
目前只有这种解决方案最好,不过需要购买或开发。
希望有经验的同志能就这个问题进一步讨论一下。
例如有没有成熟的基于WebDAV的上传方案,或者开源或免费的支持多文件
和目录的上传组件。
--
水无形 风无影 任何案件的推理都取决于心……
※ 修改:·HAX 於 12月30日13:43:29 修改本文·[FROM: 202.120.15.34]