VC编写自己构造http协议数据的post上传图片类(MFC环境带编码转换)
编译开发环境:WIN10+64位,VC++6.0
功能:VC++上传图片POST到WEB服务器。VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)
post数据,是直接在http协议头将Content-Type设为application/x-www-form-urlencoded,这样服务器会将提交的数据,当作表单数据处理。发送的数据格式也为:userid=lilu&data=post图片类&name=天漏客。 而post图片则是自己构造http协议数据,将http协议头的Content-Type设为multipart/form-data,同时还要加上 boundary=xxxxxxx(xxxxxxx表示一个字符串),后面的协议数据内容将要以这个xxxxxxx来进行分隔。发送的数据格式为:
---------------2389jhrwfjsjd9823
Content-Disposition: form-data; name="userid"
27EF272F28239E5A34EE223FADFWAFAEaE
首先说一下本类的方便之处。
1、使用方便,步骤简单。
2、发送图片时,还可以构造其他数据。
3、兼容_MBCS和_UNICODE模式,并且能使用GB2312和UTF8两种编码进行发送与接收,类自动实现转换。
首先说一下这个类的使用,方法比较简单。
1、在工程中加入SendData.h和SendData.cpp文件,然后包含头文件,就可以定义类。
CSendData MySend;
2、设置服务器参数。
MySend.SetServerParam(_T(www.net188.com),_T("/posttest.asp"),80);
3、如果同时要包含数据,就要先构造数据。
MySend.MakePostData(_T("userid"),_T("188"));
MySend.MakePostData(_T("name"),_T("源码资源网"));
4、发送图片。定义好接收数据的指针,以及发送和接收的编码。
TCHAR*pRecvData = NULL;//接收数据的指针
DWORDdwRecvSize = 0;//接收数据的大小
DWORDdwRetSend = 0;//发送函数返回值
intSendCode = HTTP_POST_GB2312,RecvCode=HTTP_POST_GB2312;//发送与接收的编码
dwRetSend = MySend.PostPicDataMethod(_T("c:\\pic\\测试图片.jpg"),_T("filename"),
&pRecvData,dwRecvSize,
SendCode,RecvCode);
//处理接收数据,返回值。
//99:图片不存在
//100:正常成功
//101:服务器无法连接
//102:提交页面无法打开
//103:数据发送失败
//104:服务器处理失败
//500:异常错误
5、处理结果
类自动的根据编译环境,将返回指针转换为LPTSTR类型,所以你只需要定义一个LPTSTR类型的指针,将其地址传递给发送函数即可。类会自己分 配内存存储返回的结果,并且会自动释放。所以使用时要注意,当这个类的作用域结束时,相应的接收数据内存也会释放掉,你可以将接收数据另拷贝一份,或者在它的作用域内处理掉也可。
CString strRecv(pRecvData); //将接收数据复制到strRecv中。
6、完毕。
测试一下啊!启动后界面如下:
7.编译成功界面:
8.操作演示界面:
本源码下载于网络,版权归原著者所有,本站只是将源码成功编译并演示。
附件下载:
|