wininet Ftp 相关

13 篇文章 0 订阅

最近使用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值