2011-11-24 24 views
0

我有一个函数可以将我的系统中的文件加密并上传到服务器。在我试图关闭时上传文件后,发生错误。错误代码是12030.我的代码的上传部分如下所示。该代码在关闭文件时产生错误的问题是什么。在关闭vC++中的文件时出错

CFile fp; 
UINT uNoOfBytes; 
UINT uNoOfEncBytes; 
bool bIsFinalBlock = false; 
BYTE* pBuf = NULL; 
HINTERNET m_hRequest; 


if(!fp.Open(szFilePath, CFile::modeRead | CFile::shareDenyNone, &err)) 
{ 
    AfxThrowFileException(err.m_cause, err.m_lOsError, err.m_strFileName); 
} 

do 
{ 
    uNoOfBytes = fp.Read(pBuffer, DATA_CHUNK_SIZE); 

    if(uNoOfBytes < DATA_CHUNK_SIZE) 
    { 
     bIsFinalBlock = true;    
    } 

    uNoOfEncBytes = aes.Encrypt(pBuffer,(int)uNoOfBytes, bIsFinalBlock); 

    if (!(bRet=InternetWriteFile(m_hRequest, (BYTE*)pBuffer, uNoOfEncBytes,NULL))) 
    { 
     DWORD dw = GetLastError(); 
     break; 
    } 

    if(bIsFinalBlock) 
     break; 

    }while (uNoOfBytes != 0) ; 

fp.Close(); 
+0

是否有任何消息与该错误代码?如果是这样,请发布该消息。另外,您是否可以在代码中确定出现错误的确切点?如果是这样,请在代码中标注注释。 –

+0

没有错误代码的消息。错误发生在fp.Close(); –

回答

1

根据MSDN

“与服务器的连接已被重置或终止,或者遇到一个不兼容SSL协议例如,WinHTTP的版本5.1不支持SSL2,除非客户端特别启用。它。”

无论如何,我没有看到你在哪里初始化m_hRequest。阅读this,HINTERNET应该用任一函数初始化。