非常简单的一个GETFILE函数,如下
void GetFTPFile(CString strFileName)
{
try{
CInternetFile* pFile = m_pFtpConn->OpenFile(strFileName);
if(pFile == NULL)
return 0;
int  iFileLength = (int)pFile->GetLength();//文件长度
double  dlTotalReaded = 0.0;
int  iReaded = 0;
char buffer[BYTECOUNT + 1]; //存放文件数据的buffer
memset(buffer , 0 , BYTECOUNT + 1); while(iReaded = pFile->Read(buffer , BYTECOUNT))//循环读取数据
{
dlTotalReaded += iReaded;
int iPercent = (dlTotalReaded / iFileLength)*100;

}
file.Close();
if(pFile != NULL)
{
pFile->Close();
delete pFile;
pFile = NULL;
}
}
catch(CInternetException* e)
{
e->ReportError();
e->Delete();
return 0;
}
}
代码非常简单,
但是现在有个问题,就是
int  iFileLength = (int)pFile->GetLength();//文件长度
得到的文件长度有时候是不对的,但是有时候又是对的。这是为什么。
我有个文件是1M 多的,但是有时候得到的iFileLength却是4096BYTES,这是为什么。
GetFile()这个函数是不是有什么地方需要注意?
请大家指点。
注:m_pFtpConn是其他地方处理的。已经可以保证是对的了。
还有,虽说有时候得到的文件长度不对,但是整个文件还是可以完整的下载下来的。