时 间:2012-12-15 07:10:00
作 者:摘 要:寻遍世界各个网站,各个关键字都没有的情况下,自己终于测试出来了!也回复了google上2006年以来发表都还没有解决的问题!
正 文:
上传附件,原来逻辑也很简单,但是因为中文的问题,unicode 的问题,让上传变得复杂了!
方法一:我们可以用 WebBrower 控件来处理网页的提交动作的。我们可以通过 WebBrowser.Document.form(n).submit() 来提交网页表单的内容。不过这个方法的缺点是:
1. 这个控件是IE提供的原因,就有着浏览器是IE对的限制,譬如 user-agent 就一定是 ie ,
2. 交互的服务器也只能是 html 的,不能是wap 服务器(ie 不支持 WML 标识);而且
3. WebBrowser 控件的内存耗用也比较大,对于同时多开的操作,就会让程序变慢,内存耗用激增!
所以,我针对的研究是用 XMLHttp 直接与服务器交互的 方法二。
这个方法的好处是,原理通用于任何标准的 网页服务器,不论 IIS, Apache, tomcat,或不论服务器的开发语言是 jsp , php , asp, asp.net。 我们开发的客户端也可以是 js, Access/VBA, Excel/VBA, php ... 都能正确使用!
对于上传 multipart/form-data 格式的附件,找了很久找到很多段的代码,标准就是要输出这样的结果:
--boundary
Content-Disposition: form-data; name="varname";
--boundary
Content-Disposition: form-data; name="uploadName"; filename="上传文件名称"
Content-Type:
--boundary--
看了下这个标准,会编程的人都会生成文本数据的了,不消一会就写好了,
Set http = New MSXML2.ServerXMLHTTP
http.Open "POST", URL, False
postData = ......
http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & boundary
http.setRequestHeader "Content-Length", len( postData)
http.Send