用xmlhttp将html的数据打包成multipart/form-data格式,实现异步上传文件功能

在局域网环境下,针对<input type='file'>导致的文件上传速度慢的问题,通过使用Applet和XMLHttpRequest将HTML数据打包成multipart/form-data格式,实现了异步上传文件。由于Applet的安全设定和Firefox的安全限制,最终采用JavaScript结合ADODB.Stream在IE中完成数据打包并发送。详细介绍了ADODB.Stream的使用方法,并提供了相关资源链接。
摘要由CSDN通过智能技术生成

阅读本文之前,可以先阅读RFC1867 Form Based File Upload in HTML协议。

1.
不知道为什么,在局域网,有些电脑上含有<input type="file>的<form method="post" enctype="multipart/form-data">表单提交时很快,但有些很慢。
服务器端使用过多种文件接收工具库测试如apache common file upload、jspsmartupload等等亦如此。
也换过浏览器如IE和FireFox,问题依然。

在搜索的过程中,有人说这是浏览器的限制,或者是网络问题,或者是服务器网络设定等等,但是... 没有人指出具体的解决方案,><!。
不过在多次试验下,终于发现,如果是用applet来发送或者是用xmlhttp把表单打包成multipart/form-data格式可以解决这个问题,热泪盈眶中...

当然事情不是这么顺利。首先我使用applet,但是发现该死的jre安全设定不允许访问本地文件,耗了我很多精力。虽然后来applet成功了,不过设定这么困难,而且还要下载jre,客户肯定不干。

然后我考虑在浏览器中打包数据,用流发送。首先在一个法国网站找到mozilla/firefox的解决方案,坚定了我的信心。尝试在IE里用Scripting.FileSystemObject和ADODB.Stream发送,但是ADODB.Stream蹩脚的使用方法把我困住,后来,居然在VB论坛找到了正确的api使用方法,然后我把他转成javascript

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值