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;
}
比如已存在目录:车辆\自行车,但使用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;
}
相关文章推荐
- JTextPane 内容的保存:图文格式保存的解决
- php XMLReader用法
- EditPlus v3.31注册码
- php 解析xml 的四种方法(转)
- Ubuntu中FTP服务器搭建
- php中配置伪静态
- PHP ServerPush (推送) 技术的探讨
- PHP的输出缓冲区(转)
- php分页显示代码
- phpcms v9 模板标签技巧,标签常用方法
- “非常PHP学习网”(www.veryphp.cn)一期上线
- 阐述二维码的原理以及使用google api和PHP QR Code来生成二维码
- 阐述二维码的原理以及使用google api和PHP QR Code来生成二维码
- [php]领域模型和数据映射器
- ThinkPHP 中M方法和D方法的具体区别
- 修改ZendStudio新建php文件时的模板
- Win7 + VirtualBox( Ubuntu12.04_amd64)搭建嵌入式安卓开发环境
- ThinkPhp分页功能总结
- PHP面向对象技术(全面讲解)
- 【discuzx2】forum_index.php文件中$_G['cache']['announcements']