C语言学习day22:URLDownloadToFile函数/开发文件下载工具
简言:
在之前我们去下载某个东西都是用的迅雷之类的软件,但是现在,只要提供一个地址,或者一个链接,我们自己去做一个工具去下载。这就是我们这篇的主要内容。
也就是我们的winAPI:URLDownloadToFile函数
URLDownloadToFile函数:
URLDownloadToFile
是 Windows API 中的一个函数,属于 urlmon.dll
动态链接库。它的主要功能是从指定的 URL 下载文件,并将其保存到本地磁盘上的指定路径。这个函数通常在 C/C++ 编程中使用,用于简单的文件下载任务。
函数原型:
HRESULT URLDownloadToFile(
LPUNKNOWN pCaller,
LPCSTR szURL,
LPCSTR szFileName,
DWORD dwReserved,
LPVOID lpfnProgress
);
参数说明:
- pCaller: 指向请求此下载的调用者的指针,通常设置为
NULL
。 - szURL: 要下载的文件的 URL。
- szFileName: 下载后保存到本地的完整路径和文件名。
- dwReserved: 保留参数,通常设置为 0。
- lpfnProgress: 进度回调函数的指针,用于获取下载进度,通常可以设置为
NULL
。
返回值:
- 成功时返回
S_OK
;失败时返回相应的 HRESULT 错误代码。
注意事项:
虽然是WinAPI,但不一定都在windows.h的头文件中,而URLDownloadToFile函数就在头文件
#include <urlmon.h>中
同时还有包含的库:
#pragma comment(lib, "urlmon.lib")
在使用WinAPI时,要注意Header头文件,和Library库。
示例代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <wchar.h> // 需要引入宽字符库
#include <locale.h> // 需要包含 locale.h 头文件
#include <windows.h>//window api函数
#include <tchar.h>
#include <stdio.h>
#pragma comment(lib, "urlmon.lib")
int main() {
LPCSTR url = "http://localhost:3000/upload/6015dcfee434c966fa6e55e04.jpg";
LPCSTR localFile = "D:\\1.jpg";
HRESULT hr = URLDownloadToFile(
NULL,
url,
localFile,
0,
NULL
);
if (hr==S_OK)
{
printf("下载成功");
}
return 0;
}