HTTP协议将文件上传服务器

前言

基于MFC将本地文件(我上传的是csv文件)传到指定服务器 服务器http协议在将其放到protocol/upload_file.php路径下【免费】Http上传文件到服务器php文件资源-CSDN文库

 

1、MFC代码
void setHttpCSV(CString serverName,CString CSVPath){
        CInternetSession session;
        CHttpConnection* conn=NULL;
        CString type;
        CString boundary;
        CString strData;
        INTERNET_PORT m_port;
        CHttpFile* Hfile;
        CFile file;
        DWORD totallength;
        DWORD readlength;
        DWORD neicun;
        void* vd;
        LPTSTR strerror;
        m_port=80;
        boundary=_T("-----46as7d----");
        neicun=64*1024;
        BOOL bRet = FALSE;
        DWORD dwServiceType = 0; 
        CString strServer = _T("");
        CString strObject = _T("");
        INTERNET_PORT nPort = 0;
        bRet =  AfxParseURL(serverName, dwServiceType, strServer, strObject, nPort);
        //CString filepath;
        //CSVPath.GetWindowText(filepath);
        CSVPath.Replace(L"\\",L"\\\\");
        int nPos = CSVPath.ReverseFind('\\');
        CString strFileName = CSVPath.Mid(nPos+1);
        type = _T("Content-Type: text/csv\r\n");  
        type += _T("name: %s\r\n"); // 例如,用于OAuth 2.0的Bearer token  
        type += _T("boundary: %s\r\n"); // 自定义请求头  
        type += _T("\r\n"); // 请求头结束标记  
        //type=_T("Content-Type:text/csv;name:333.csv;boundary=%s\r\n");
        strData.Format(type,strFileName,boundary);
        if(!file.Open(CSVPath, CFile::modeRead | CFile::shareDenyWrite))
        {
            AfxMessageBox(_T("文件打开失败!"));
            return;
        }

        totallength=file.GetLength();

        try
        {

            conn = session.GetHttpConnection(strServer,nPort);
            Hfile=conn->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject);
            Hfile->AddRequestHeaders(strData);
            Hfile->SendRequestEx(totallength, HSR_SYNC | HSR_INITIATE);

            vd=malloc(neicun);

            readlength=-1;
            while (readlength!=0)
            {
                readlength=file.Read(vd,neicun);
                if(readlength!=0)
                {
                    Hfile->Write(vd,readlength);
                }
            }
        }
        catch (CException* e)
        {
            e->GetErrorMessage(strerror, MAX_PATH);
            e->Delete();
            AfxMessageBox(strerror);
            Hfile->Close();
            return;
        }

        Hfile->EndRequest(HSR_SYNC); 
        Hfile->Close();
        delete Hfile;

        file.Close();
        session.Close();

        if(vd!=NULL)
        {
            free(vd);
        }
    }
2、调用
      CString serverName;
HTTP_IP(服务器IP)
      serverName.Format(_T("http://%s:8060/protocol/upload_file.php"),HTTP_IP);
      CString CSVPath;(本地文件路径)
      setHttpCSV(serverName,CSVPath);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值