登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

图像处理 视频分析 机器视觉 模式识别

方向比努力更重要

 
 
 

日志

 
 
关于我

河北软件开发项目,电子警察卡口项目,公安天网项目,媒体流处理,数字图像处理。媒体服务器 RTSP、图像处理、车牌识别……DCT变换,H.264压缩

VC 利用HTTP协议上传文件  

2012-10-17 15:05:37|  分类: ____网站平台 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

BOOL UseHttpSendReqEx(TCHAR *upFile)
{
HINTERNET hSession=NULL, hConnect=NULL, hRequest=NULL;
hSession = InternetOpen(_T("test"),INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
hConnect = InternetConnect(hSession,_T("192.168.0.100"), INTERNET_DEFAULT_HTTP_PORT,  
NULL,NULL,INTERNET_SERVICE_HTTP,INTERNET_FLAG_NO_CACHE_WRITE,NULL);
  INTERNET_BUFFERS BufferIn = {0};
  DWORD dwBytesRead;
  DWORD dwBytesWritten;
  BYTE pBuffer[1024]; // Read from file in 1K chunks
  BOOL bRead, bRet;
  BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
  hRequest = HttpOpenRequest (hConnect, "POST",
  "/mydirectory/test.txt", NULL, NULL, NULL, 0, 0);
  if (!hRequest)
  {
  printf("Failed to open request handle: %lu\n", GetLastError ());
  return FALSE;
  }
  HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,
  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  if (hFile == INVALID_HANDLE_VALUE)
  {
  printf("\nFailed to open local file %s.", upFile);
  return FALSE;
  }
  BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);
  printf ("File size is %d\n", BufferIn.dwBufferTotal );
  if(!HttpSendRequestEx( hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
  {
  printf( "Error on HttpSendRequestEx %lu\n",GetLastError() );
  return FALSE;
  }
  DWORD sum = 0;
  do
  {
  if (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),
  &dwBytesRead, NULL)))
  {
  printf ("\nReadFile failed on buffer %lu.",GetLastError());
  break;
  }
  if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,
  &dwBytesWritten)))
  {
  printf ("\nInternetWriteFile failed %lu", GetLastError());
  break;
  }
  sum += dwBytesWritten;
  }
  while (dwBytesRead == sizeof(pBuffer)) ;
  CloseHandle (hFile);
  printf ("Actual written bytes: %d\n", sum);
  if(!HttpEndRequest(hRequest, NULL, 0, 0))
  {
  printf( "Error on HttpEndRequest %lu \n", GetLastError());
  return FALSE;
  }
  return TRUE;
}
void main()
{
UseHttpSendReqEx("e:\\test.txt");
}

自己编写的使用http协议post网页数据的类(包含编码转换)
我的代码是这么写的,想把本地的e:\test.txt传到服务器的\mydirectory\test.txt。服务器上有mydirectory这个目录,并且也有写权限。我一步步调度的,函数里都返回true的,但是服务器就是没有存上文件。

  评论这张
 
阅读(94255)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018