您的位置:首页 > 其它

URLDownloadToFile调用返回E_ABOR问题

2012-08-08 10:58 501 查看
在调用URLDownloadToFile的时候,发现返回值为E_ABOR,后来debug调试才发现原来URLDownloadToFile函数(第3个参数)不能自动创建下载文件目录,

并且是绝度路径且包括文件名,不能是路径,具体说明如下

HRESULT URLDownloadToFile(
LPUNKNOWN pCaller,
LPCTSTR szURL,
LPCTSTR szFileName,
DWORD dwReserved,
LPBINDSTATUSCALLBACK lpfnCB
);

参数介绍说明:
第一个 一般为NULL。

第二个 参数就是要下载文件的目标URL,完整路径。例如:http://192.168.20.17/CHK/ClientSetup/setup.exe,
或者http://192.168.20.17/CHK/ClientSetup/ZFChkProofSetting.aspx等等

第三个 是本地保存路径,也是完整路径。例如:C:\\Temp\\setup.exe(注意如果写成C:\\Temp\\是不正确的),
因为URLDownloadToFile函数不能主动创建文件目录,所以建议在调用URLDownloadToFile函数之前调用PathFileExists()判断文件夹是否存在,
如果不存在,调用CreateDirectory()函数创建完目录才调用URLDownloadToFile.

第四个 是保留,必须为0。

第五个 是指向一个IBindStatusCallback接口的指针,这就类似一种回调机制,你可以参考这些来活动当前下载进度,选择是否继续下载等等,
一般设置为NULL。
具体代码说明如下:

//判断存放文件的文件夹是否存在,没有就创建
char cFilePath[MAX_PATH] = {'\0'};
int i = strlen("C:\\Temp\\");
memcpy(cFilePath,"C\\Temp\\",i);
if( !PathFileExists(cFilePath))
{
//创建文件夹,没有就创建,创建失败就退出
if(!CreateDirectory(cFilePath,NULL))
{
return false;
}
}
memcpy(cFilePath + i,"setup.exe",strlen((LPCTSTR)"setup.exe"));

LPCTSTR urlPath = "http://192.168.20.17/CHK/ClientSetup/setup.exe";

HRESULT hr = URLDownloadToFile( NULL, lpcCHKProofURL, (LPCTSTR)cFilePath, 0, NULL);

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