VC上传文件post到web服务器(VC上传文件,图片或视…

VC上传文件post到web服务器(VC上传文件,图片或视频)

编译开发环境:WIN10+64位,VC++6.0

功能:VC上传文件post到web服务器(VC上传文件,图片或视频)。代码为本站原创,转移请注意出处。

1.项目功能需求,需要VC++上传文件或图片到WEB服务器,搜索了一些算法,现在做成一个示例项目,有兴趣的可以下载参考一下。主要代码如下,已经进行了一些整理与说明:

  1. //可以上传任意文件
  2. void CMyTestDlg::OnButton2()
  3. {
  4.         // TODO: Add your control notification handler code here
  5.         //调用方式 D:\\05.png 或 D:\\test.rar
  6.     HttpPostFile(“”, L”D:\\05.png”/*L”E:\\123\\test.txt”*/, “uploadeFile”, “application/octet-stream” /*L”text/plain”*/);
  7. }
  8. void CMyTestDlg::HttpPostFile(CString url, CString file, CString paramName, CString contentType)
  9. {
  10.     CInternetSession pSession(_T(“ic_PostWav”));  //可以随意
  11.     CHttpConnection* pConnect;
  12.     CHttpFile *       pFile;
  13.     //通过  url解析出来
  14.     CString pServeIP = _T(“192.168.2.58”);
  15.     INTERNET_PORT wPort = 7078;
  16.     CString pObject = _T(“/UploadServletWeb”);
  17.     pConnect = pSession.GetHttpConnection(pServeIP, wPort);
  18.     pFile = pConnect->OpenRequest(CHttpConnection::HTTP_VERB_POST, pObject, NULL, 0, NULL, NULL, INTERNET_FLAG_DONT_CACHE);
  19.     CString boundary = “—-1a2b3c4d5e6f”;
  20.     //Http 头部
  21.     CString pPostHeader;
  22.     pPostHeader = “Accept:audio/x-wav,text/html,application/xhtml+xml,application/xml,*/*;q=0.9,*/*;q=0.8\r\n”;
  23.     pPostHeader += “Content-Type: multipart/form-data;”;
  24.     pPostHeader += “boundary=” + boundary + “\r\n”;
  25.     pPostHeader += “Connection: keep-alive\r\n”;
  26.     CString  httpHead;
  27.     httpHead.Format(_T(“%s”), pPostHeader);
  28.     pFile->AddRequestHeaders(httpHead);
  29.     //数据帧头
  30.     CString dataTop, name,filename;
  31.     name = “name”;
  32.         //test.rar或05.png
  33.     filename = “05.png”;//重要:此处名称与上传文件名称相同
  34.     dataTop = “–“+ boundary +”\r\n”;
  35.     dataTop += “Content-Disposition:form-data;”;
  36.     dataTop += “name=”” + name + “”;”;
  37.     dataTop += “filename=”” + filename + “”\r\n”;
  38.     dataTop += “Content-Type:” + contentType + “\r\n\r\n”;
  39.     byte* pPostTopbytes = (byte*)dataTop.GetBuffer(0);
  40.     //数据包尾
  41.     CString dataEnd;
  42.     dataEnd = “\r\n–” + boundary + “–\r\n”;
  43.     byte* enderbyte = (byte*)dataEnd.GetBuffer(0);
  44.     CFile cfile;
  45.     cfile.Open(file, CFile::modeRead | CFile::shareDenyRead, NULL);
  46.     DWORD dwSize = dataTop.GetLength() + dataEnd.GetLength() + cfile.GetLength();
  47.     pFile->SendRequestEx(dwSize);
  48.     //写数据头
  49.     pFile->Write(pPostTopbytes, dataTop.GetLength());
  50.     //写数据主体
  51.     int bufflength = 4 * 1024;
  52.     byte* buffer = new byte[bufflength];
  53.     int byteRead = 0;
  54.     while ((byteRead = cfile.Read(buffer, bufflength)) != 0)
  55.     {
  56.         pFile->Write(buffer, byteRead);
  57.     }
  58.     cfile.Close();
  59.     //写数据尾部
  60.     pFile->Write(enderbyte, dataEnd.GetLength());
  61.     //发送文件
  62.     pFile->EndRequest();
  63.     //接收返回
  64.     CString strSentence = _T(“”), strGetSentence = _T(“”);
  65.     DWORD dwRet;
  66.     pFile->QueryInfoStatusCode(dwRet);
  67.     if (HTTP_STATUS_OK == dwRet)
  68.     {
  69.         while (pFile->ReadString(strSentence))   // 读取提交数据后的返回结果
  70.         {
  71.             strGetSentence = strGetSentence + strSentence;
  72.         }
  73.         //todo:  将返回的编码数据转为自己需要的编码数据
  74.                 //弹出返回值
  75.                 AfxMessageBox(strGetSentence);
  76.     }
  77.     pFile->Close();
  78.     pConnect->Close();
  79. }

复制代码

2.示例项目编译成功如下:

3.运行界面如下:

4.示例程序只能手动在代码中更改上传图片或文件,此处大家可以下载源码后进行优化,此处不再做此处理。下面图片为上传图片后的,并返回服务器图片路径:

5.上传文件后的截图如下(此处需要注意的是代码中的这个filename参数,需要对应上传文件后辍:

6.代码及软件操作图:

下载说明:
1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2.如果源码下载地址失效请联系站长QQ进行补发。
3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,由于源码具有复制性,一经售出,概不退换。用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【安安资源网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5.请您认真阅读上述内容,购买即以为着您同意上述内容,由于源码具有复制性,一经售出,概不退换。
安安资源网 » VC上传文件post到web服务器(VC上传文件,图片或视…