try
    {
pFile = dynamic_cast<CInternetFile*>(m_pSession->OpenURL(
szURL, 1,
INTERNET_FLAG_TRANSFER_BINARY 
| INTERNET_FLAG_DONT_CACHE
| INTERNET_FLAG_RELOAD
));
}
    catch (CInternetException* e)
    {
        TCHAR   szCause[255];
        e->GetErrorMessage(szCause, 255);
        m_pSession->SetStatus(szCause);
        e->Delete();
        delete pFile;
        pFile = NULL;
        return FALSE;
    }if (strcmp(typeid(*pFile).name(), "class CHttpFile") == 0)
    {
CHttpFile* pHttpFile = dynamic_cast<CHttpFile*>(pFile);
CString str;
pHttpFile->QueryInfo(HTTP_QUERY_STATUS_CODE, str);

if(atoi(str.GetBuffer()) == HTTP_STATUS_NOT_FOUND)
     {
m_pSession->SetStatus("文件不存在!");
pHttpFile->Close();
return FALSE;
      }
    }上面的代码对于一般的文件都是可操作的(能正确执行)
但是如果是无后缀名的文件 就会提示出错 str=404 文件不存在
而服务器上明明是有文件的
郁闷了许久 Anyone know it?

解决方案 »

  1.   

    我个人的想法是这句代码中:
    CHttpFile* pHttpFile = dynamic_cast<CHttpFile*>(pFile);
    可能是有默认的文件扩展名,如果文件没有扩展名,就会加上默认的扩展名,然后去寻找,当然找不到了
      

  2.   

    是跟你服务器上的配置有关吧,你试一下在IE浏览器里用同样的URL访问这个文件试试?没有扩展名的文件估计一样是无法打开的,因为IIS6.0以后版本为了安全起见都限制了什么类型的文件能下载什么类型的文件无法下载,你检查一下IIS配置中的MIME是不是有这个类型的文件啦。
      

  3.   

    应该是HTTP服务器的关系
    后来在FTP是可以的
    谢谢楼上的