本人最近开发MFC项目需要利用HTTP协议,上传文件至服务器,需要以二进制传输,Content-Type类型为: multipart/form-data,注意需要定义相关边界开始和结束
利用WinInt开发包HTTP封装
//HTTP服务
CHttpConnection* m_pHC;
CHttpFile* m_pHF;
CInternetSession m_cis;
以下为上传文件相关代码:
#include <afxinet.h>
CString MakeRequestHeaders(CString &strBoundary)//包头
{
CString strFormat;
CString strData;
//二进制文件传送Content-Type类型为: multipart/form-data
strFormat = _T("Content-Type: multipart/form-data;charset=UTF-8;boundary=%s\r\n");
strData.Format(strFormat, strBoundary);
return strData;
}
CString MakePreFileData( CString &strBoundary, CString &strFileName)
{
CString strFormat;
CString strData;
if(!strFileName.Compare(TEXT("ecg.txt")))//文件一
{
strFormat += _T("\r\n");
strFormat += _T("--%s");
strFormat += _T("\r\n");
strFormat += _T("Content-Disposition: form-data; name=\"ecg_file\"; filename=\"ecg.txt\"");
strFormat += _T("\r\n");
strFormat += _T("Content-Type: text/plain");
strFormat += _T("\r\n\r\n");
strData.Format(strFormat, strBoundary);
}
else if(!strFileName.Compare(TEXT("ppg.txt")))//文件二
{
strFormat += _T("\r\n");
strFormat += _T("--%s");
strFormat += _T("\r\n");
strFormat += _T("Content-Disposition: form-data; name=\"ppg_file\"; filename=\"ppg.txt\"");
strFormat += _T("\r\n");
strFormat += _T("Content-Type: text/plain");
strFormat += _T("\r\n\r\n");
strData.Format(strFormat, strBoundar