【问题标题】:C++, download file in directoryC++,下载目录中的文件
【发布时间】:2015-12-16 11:44:46
【问题描述】:

所以我有这个简单的代码来从打开浏览器的 url 下载文件

#include <iostream>
#include<Windows.h>
#include<string>

using namespace std;

int main()
{
    string dwnld_URL = "http://www.url.com/downloadpage";
    ShellExecuteA(NULL, "open", dwnld_URL.c_str(), NULL, NULL, SW_SHOWNORMAL);

    return 0;
}

但我希望文件进入当前目录,而不是进入默认下载文件夹。有什么办法可以做到吗?

【问题讨论】:

  • 使用Windows HTTP Services或更通用的WinINet?
  • 对不起我的无知,但我怎么知道?
  • 这就是为什么在某些大学学习计算机科学和/或信息技术几年是值得的。

标签: c++ windows download directory


【解决方案1】:

如果你在 Windows 上,你可以使用

#include <iostream>
#include<Windows.h>
#include<string>
#pragma comment(lib, "urlmon.lib")

using namespace std;
int main()
{
    string dwnld_URL = "http://www.url.com/downloadpage/filename.txt";
    string savepath = "C:\\tmp\\filename.txt";
    URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);

    return 0;
}

【讨论】:

    【解决方案2】:

    首先阅读有关HTTPURLs 的更多信息。

    你想要一些HTTP 客户端库;你可以考虑libcurl,但QtPOCO 都有一些HTTP 客户端的功能。并且可能 Windows 可能有一些特定的功能。

    libcurlQtPOCO 这三个库都是free software 库,也可以在 Linux 和 POSIX 系统上运行。

    如果您需要一个 HTTP 服务器库(似乎并非如此),您也可以找到一些(例如 Wtlibonion、...)

    关于您的评论(本应包含在您的问题中)“但我怎么知道”?对于远程数据访问,直觉可能是专注于协议。

    无论您使用什么库(或框架),您都需要花费数小时或数天时间来研究它并阅读它的文档和教程。

    【讨论】:

    • 好的,我下载了 libcurl 库……现在,有没有我应该使用的特定函数?我查找了它,但我找不到它......我真的是一个新手,所以如果我的问题看起来很明显,我很抱歉......
    • libcurl 有一个很好的教程。但是你需要先了解HTTP。
    • 为了移动文件而不会对系统造成太大影响的唯一目的,还有Background Intelligent Transfer Service
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2012-11-02
    • 2011-01-01
    • 2012-02-13
    相关资源
    最近更新 更多