当前位置: 首页 > article >正文

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;
}


http://www.kler.cn/a/444129.html

相关文章:

  • 金碟中间件-AAS-V10.0安装
  • 【Tomcat】第六站(最后一站啦!):数据的返回
  • CH340系列芯片驱动电路·CH340系列芯片驱动!!!
  • 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述
  • 使用React构建一个掷骰子的小游戏
  • 概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。
  • [python]使用flask-caching缓存数据
  • QT图形/视图架构详解(二)
  • Oracle 技术精选学习
  • VScode使用教程(菜鸟版)
  • Day26下 - BERT项目实战
  • 2024 年的科技趋势
  • vue-cli 5接入模块联邦 module federation
  • 【GO环境安装】mac系统+GoLand使用
  • nginx 记录完整的 request 及 response
  • 使用JustAuth实现gittee登录
  • 中型项目下的 MySQL 挑战与应对
  • 利用Python爬虫实现数据收集与挖掘
  • 音视频入门基础:MPEG2-TS专题(18)——PES流简介
  • HTML基本标签详解
  • MySQL Explain 分析SQL语句性能
  • PostgreSQL: 事务年龄
  • python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分
  • 医院与医疗设备供应商网络安全事故综述
  • ElasticSearch学习7
  • 粘包由应用层协议解决