C语言学习day22:URLDownloadToFile函数/开发文件下载工具

简言:

在之前我们去下载某个东西都是用的迅雷之类的软件,但是现在,只要提供一个地址,或者一个链接,我们自己去做一个工具去下载。这就是我们这篇的主要内容。

也就是我们的winAPI:URLDownloadToFile函数

URLDownloadToFile函数:

URLDownloadToFile 是 Windows API 中的一个函数,属于 urlmon.dll 动态链接库。它的主要功能是从指定的 URL 下载文件,并将其保存到本地磁盘上的指定路径。这个函数通常在 C/C++ 编程中使用,用于简单的文件下载任务。

函数原型:

cpp 复制代码
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库。

示例代码:

cpp 复制代码
#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;
}
相关推荐
ZZHow102418 分钟前
Ascend C算子开发(高级)笔记
c++·人工智能·笔记·深度学习·华为云
aqiu1111111 小时前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)
c++·算法·leetcode
PC2005-cloud1 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
lojox1 小时前
深入理解 C++ STL:vector 底层实现、迭代器失效与 list 特性
开发语言·c++
iotxiaohu1 小时前
用 cflow 查看 C 函数调用关系
c语言·开发语言·cflow
小陈phd1 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我123451 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林1 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序
小陈phd2 小时前
深入理解agent学习笔记(六)——提示工程-优化系统提示词
笔记·学习
微笑星河q2 小时前
C++类和对象(下)初始化列表、类型转换、static、友元、内部类、匿名对象
开发语言·c++