文件上传到HTTP 服务器 2011-03-14 17:15 最近两个星期主要搞这个东东,到今天总算比较圆满的搞定了
用http 协议上传主要有两种形式: 第一是用http 的put 协议,第二是用http 的post 协议
先说说 put 协议, 所谓 put,顾名思义,就是把文件"放"到server 端
这个过程不涉及文件的http 和 mime 封装(post 协议需要做), 因而比较简单
但是考虑到安全问题,一般服务器不会开发 put 权限,因此这种方法的用途并不广泛 废话不多说,来看看代码: CInternetSession internetSession("my session"); //定义 session CHttpConnection* httpConnection = internetSession
GetHttpConnection(strServerIP,intServerPort); //获得链接 CHttpFile* httpFile = httpConnection->OpenRequest(CHttpConnection::HTTP_VERB_PUT,strRemoteFile,NULL,0,NULL,NULL,INTERNET_FLAG_DONT_CACHE); //发送请求
httpFile->SendRequestEx(&BufferIn,NULL,HSR_INITIATE,0); 注意倒数第二句的CHttpConnection::HTTP_VERB_PUT, 表示程序将采用http 的put 协议上传文件
再看 post 协议,这个东东如果只涉及文本还是比较简单的,可以直接 post 过去,不用构造表单
但是一旦需要上传文件, 就需要用http 和 mime 的两层封装了
封装需要对 http 头和mime 标识做