在 WinForm 中通过 HTTP 协议向服务器端 上传文件 相信
用 ASP.NET 写一个上传文件的网页大家都会写但是有没有
人想过通过在 WinForm 中通过 HTTP 协议上传文件呢 有些
人说要向服务器端上传文件用 FTP 协议不是很简单吗效率
又高为什么还要使用 HTTP 协议那么麻烦呢这里面有几个原
因 1FTP 服务器的部署相对麻烦还要设置权限权限设置不对
还会惹来一系列的安全问题。 2 如果双方都还有防火墙又不
想开发 FTP 相关的一些端口时 HTTP 就会大派用场就像
WEB Services 能穿透防火墙一样。 3 其他的 ...还在想呢 ... 但
是使用 HTTP 也有他的一些问题例如不能断点续传大文件上
传很难速度很慢所以 HTTP 协议上传的文件大小不应该太
大。 说了这么多原归正传一般来说在 Winform 里通过 HTTP
上传文件有几种可选的方法 1 前面提到的 Web Services 就是
一种很好的方法通过编写一个 WebMethod 包含有 byte 类
型的参数然后调用 Web Services 的方法文件内容就会以
Base64 编码传到服务器上然后重新保存即可。 WebMethod
public void UploadFilebyte contentstring filename... Stream sw
new StreamWriter... sw.Close 当然这种通过 Base64 编码的方
法效率比较低那么可以采用 WSE 支持附件并以 2 进制形式
传送效率会更高。 2 除了通过 WebService 另外一种更简单
的方法就是通过 WebClient 或者 HttpWebRequest 来模拟
HTTP 的 POST 动作来实现。 这时候首先需要编写一个
web form 来响应上传代码如下 ltDOCTYPE HTML PUBLIC
quot-//W3C//DTD HTML 4.0 Transitional//ENquot gt lthtmlgt
ltheadgt lttitlegtWebForm1lt/titlegt ltmeta
namequotGENERATORquot ContentquotMicrosoft Visual
Studio .NET 7.1quotgt ltmeta
namequotCODE_LANGUAGEquot ContentquotCquotgt ltmeta
namequotvs_defaultClientScriptquot
contentquotJavaScriptquotgt ltmeta
namequotvs_targetSchemaquot
contentquot/intellisense/ie5quotgt
lt/headgt ltbodygt ltform idquotForm1quot methodquotpostquot
runatquotserverquotgt lt/formgt lt/bodygt lt/htmlgt using System
using System.Collections using System.ComponentModel using
System.Data using System.Drawing using System.Web usin