利用WinInet上传文件到servlet

char buffer[DEFAULT_BLOCKSIZE];
		INTERNET_PORT	nPort = 9090;
		HINTERNET		hInternet;
		HINTERNET		hConnect;
		HINTERNET		hRequest;
		CfileSrc		filesrc;

		LPCTSTR accept[] = {_T("*/*"), NULL};

		CFileDialog openFileDlg(TRUE, _T("All files"), _T("*.*"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("AllFiles (*.*)|*.*||"));

		if(openFileDlg.DoModal() == IDOK)
		{
			FILE *pFile;
			if((pFile = filesrc.OpenFile(::CT2A(openFileDlg.GetPathName()))) == NULL)
			{
				printf("open file error!");
				return 0;
			}
			CString fileTitle = openFileDlg.GetFileTitle();
			CString fileExt	  = openFileDlg.GetFileExt();
			int		fileSize  = filesrc.GetFileSize(::CT2A(openFileDlg.GetPathName()));
			CString rcvUsers;
			rcvUsers = _T("whf@whf-pc,matt@whf-pc,xsf@whf-pc");


			hInternet = ::InternetOpen(_T("111"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
			hConnect  = ::InternetConnect(hInternet, _T("127.0.0.1"), nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
			hRequest  = ::HttpOpenRequest(hConnect, _T("POST"), _T("/plugins/fileservice/fileservice"), NULL, NULL, accept, 0, 
				INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_HYPERLINK);
			
			INTERNET_BUFFERS	ib;	
			memset(&ib, 0, sizeof(INTERNET_BUFFERS));
			ib.dwStructSize	= sizeof(INTERNET_BUFFERS);
			ib.dwBufferTotal = filesrc.GetFileSize(::CT2A(openFileDlg.GetPathName()));
			ib.dwBufferLength = DEFAULT_BLOCKSIZE;

			CString header = _T("fileTitle:") + fileTitle + _T("\r\nfileExt:") + fileExt + _T("\r\nrcvUsers:") + rcvUsers;
			::HttpAddRequestHeaders(hRequest, header, header.GetLength(), HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);

			::HttpSendRequestEx(hRequest, &ib, 0, HSR_INITIATE, 0);

			int nRet;

			while((nRet = fread(buffer, sizeof(char), DEFAULT_BLOCKSIZE, pFile)) > 0)
			{
				DWORD sendData;
				::InternetWriteFile(hRequest, buffer, nRet, &sendData);

				filesrc.m_readPosition += nRet;
				printf("%d bytes have been send!\n", filesrc.m_readPosition);
			}

			::HttpEndRequest(hRequest, NULL, 0, 0);
			
			filesrc.CloseFile(pFile);
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值