我正在寻找用C ++(在Windows上)下载文件的最简单方法。 URLDownloadToFile听起来很棒,并不要求我使用我不需要的curl或其他胖库 - 这个函数的要求是什么?它将运行哪个Windows?
谢谢!
答案 0 :(得分:12)
http://msdn.microsoft.com/en-us/library/ms775123%28VS.85%29.aspx
文档是有原因的。
E:只是看一下文档,它至少需要Internet Explorer 3.0和Windows 95.很少有计算机不能满足这些要求。
E:以下是如何使用此功能的示例。您还需要将Urlmon.lib
链接到compile:
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <Urlmon.h>
int _tmain(int argc, _TCHAR* argv[])
{
printf("URLDownloadToFile test function.\n");
TCHAR url[] = TEXT("http://google.com");
printf("Url: %S\n", url);
TCHAR path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
wsprintf(path, TEXT("%s\\index.html"), path);
printf("Path: %S\n", path);
HRESULT res = URLDownloadToFile(NULL, url, path, 0, NULL);
if(res == S_OK) {
printf("Ok\n");
} else if(res == E_OUTOFMEMORY) {
printf("Buffer length invalid, or insufficient memory\n");
} else if(res == INET_E_DOWNLOAD_FAILURE) {
printf("URL is invalid\n");
} else {
printf("Other error: %d\n", res);
}
return 0;
}
答案 1 :(得分:2)
我在WTL C ++应用程序中使用此功能,并且还没有遇到任何不支持它的PC(该应用程序已安装在数千个客户端上,混合使用Windows 2000,XP,Vista和Windows 7)。 BTW没有.NET依赖项 - 它隐藏在旧的Internet Explorer Win32 DLL中。它使用起来非常简单,接受任何URL,甚至普通的DOS风格的文件名都可以使用(我们有时会用它来从网络共享中获取文件。)
答案 2 :(得分:1)
您希望如何下载此文件以及从哪个源下载?如果它来自你自己的来源,我可以想到更好的方法和更便携的方式。
如果您希望从自己的源代码下载,只需在任一侧设置套接字,发送文件大小,然后从fstream发送一个字符数组,接收字符数组并写入目标fstream。 / p>