无法使用 URLDownloadToFile() 下载 2 个文件

问题描述 投票:0回答:1

我遇到了下载几个文件(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
。即使我在第二次下载时使用它也没有任何作用。

(我几乎是初学者。)

c++ winapi
1个回答
2
投票

您在同一范围内两次声明

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 下载资源。

© www.soinside.com 2019 - 2024. All rights reserved.