您的位置:首页 > 编程语言 > PHP开发

wininet Ftp 相关

2013-10-16 16:04 686 查看
最近使用wininet的Ftp功能时,在目录设置时总是出错;

比如已存在目录:车辆\自行车,但使用FtpFindFirstFile()时返回FALSE;

原因:在之前应该先执行语句:FtpSetCurDirectory("\\")将当前目录设置成服务器根目录,这样就能成功了!

//设置上传目录

BOOL CMyGdalInfo_GuiDlg::SetDirectory(CString remoteDir)

{

//格式化目录
remoteDir

CString tempDir;

tempDir = remoteDir;

//设置为用户指定的目录

if (NULL == hConnect)

return FALSE;

if(tempDir.IsEmpty())

tempDir = "\\";

//设置根目录为当前目录

if(!FtpSetCurrentDirectory(hConnect,"\\"))

{

MessageBox("设置根目录为当前目录时出错!","错误提示",MB_OK|MB_DEFBUTTON1 |MB_ICONERROR |MB_SYSTEMMODAL);

return FALSE;

}

//查找是否存在指定目录

WIN32_FIND_DATA findData;

if(FtpFindFirstFile(hConnect,tempDir,&findData,0,0))

{

if(!FtpSetCurrentDirectory(hConnect,tempDir))

{

MessageBox("目录已存在,设置当前目录时出错!","错误提示",MB_OK|MB_DEFBUTTON1 |MB_ICONERROR |MB_SYSTEMMODAL);

return FALSE;

}

}

else //目录不存在,直接创建

{

if(FtpCreateDirectory(hConnect,tempDir))

{

if(!FtpSetCurrentDirectory(hConnect,tempDir))

{

MessageBox("目录创建成功,设置当前目录时出错!","错误提示",MB_OK|MB_DEFBUTTON1 |MB_ICONERROR |MB_SYSTEMMODAL);

return FALSE;

}

}

else

{

DWORD p = GetLastError();
//p=12003 该目录已存在产生的错误信息

if(12003 == p)
//解决中文目录不能正确识别的问题 12003:目录已存在

{

if(!FtpSetCurrentDirectory(hConnect,tempDir))

{

MessageBox("目录已存在,设置当前目录时出错!","错误提示",MB_OK|MB_DEFBUTTON1 |MB_ICONERROR |MB_SYSTEMMODAL);

return FALSE;

}

}

else

{

DWORD a,b;

char c[256];

InternetGetLastResponseInfoA(&a,c,&b);

CString error;

error.Format("目录创建失败,错误信息如下:\r\n%ld\r\n%s",p,c);

MessageBox(error,"错误提示",MB_OK|MB_DEFBUTTON1 |MB_ICONERROR |MB_SYSTEMMODAL);

return FALSE;

}

}

}

return TRUE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: