我遇到了下载几个文件(2 个)的问题。当我请求下载 1 个文件时,一切正常,但是当我请求下载 2 个文件时,项目无法编译并出现错误:
dwnld_URL: re-allocation; multiple initialization.
savepath: redefinition; multiple initialization.
#pragma comment(lib, "urlmon.lib")
CreateDirectory("E:\\1", NULL); // here i download first file
string dwnld_URL = "consoled";
string savepath = "E:\\1\\1.sys";
URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);
string dwnld_URL = "consoled"; // here i download second file
string savepath = "C:\\Users\\1.pdf";
URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);
我尝试使用
wstring
。即使我在第二次下载时使用它也没有任何作用。
(我几乎是初学者。)
您在同一范围内两次声明
dwnld_URL
和 savepath
变量。这是行不通的。您应该将下载代码移动到它自己的函数中,然后您可以在需要时调用它,例如:
bool DownloadFile(string dwnld_URL, string savepath)
{
return (URLDownloadToFileA(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL) == S_OK);
}
...
CreateDirectory("E:\\1", NULL); // here i download first file
DownloadFile("consoled", "E:\\1\\1.sys");
DownloadFile("consoled", "C:\\Users\\1.pdf");
旁注:
URLDownloadToFile()
是出了名的错误,并且没有提供非常有用/有意义的错误代码。如果您要使用系统 API 来下载文件,最好改用 WinInet/WinHTTP API。例如,请参阅 WinInet 文档的 HTTP 会话部分中的从 WWW 下载资源。