如何在C ++ \ wxWidgets中下载文件

时间:2012-08-27 16:37:45

标签: c++ download wxwidgets

如何使用wxWidgets在C ++中下载文件?

谷歌搜索,一切都没有出现!帮助赞赏!

4 个答案:

答案 0 :(得分:6)

使用wxHTTP类。

wxHTTP示例代码:

#include <wx/sstream.h>
#include <wx/protocol/http.h>

wxHTTP get;
get.SetHeader(_T("Content-type"), _T("text/html; charset=utf-8"));
get.SetTimeout(10); // 10 seconds of timeout instead of 10 minutes ...

while (!get.Connect(_T("www.google.com")))
    wxSleep(5);

wxApp::IsMainLoopRunning();

wxInputStream *httpStream = get.GetInputStream(_T("/intl/en/about.html"));

if (get.GetError() == wxPROTO_NOERR)
{
    wxString res;
    wxStringOutputStream out_stream(&res);
    httpStream->Read(out_stream);

    wxMessageBox(res);
}
else
{
    wxMessageBox(_T("Unable to connect!"));
}

wxDELETE(httpStream);
get.Close();

如果您想要更灵活的解决方案,请考虑使用libcurl

答案 1 :(得分:1)

取决于您要从哪里“下载”它,以及文件服务器如何允许下载文件。服务器可能使用FTP或HTTP,或更隐蔽的东西。没有办法从你的问题中说出哪些内容没有有用的信息。

一般情况下,我不会将wxWidgets用于此任务。 wxWidgets是一个GUI frmaework,有一些额外的东西,可能会或可能没有帮助你的情况。

答案 2 :(得分:1)

来自HTTP Andrejs 建议,FTP使用wxFTP

wxFTP ftp;

// if you don't use these lines anonymous login will be used
ftp.SetUser("user");
ftp.SetPassword("password");

if ( !ftp.Connect("ftp.wxwindows.org") )
{
    wxLogError("Couldn't connect");
    return;
}

ftp.ChDir("/pub");
wxInputStream *in = ftp.GetInputStream("wxWidgets-4.2.0.tar.gz");
if ( !in )
{
    wxLogError("Coudln't get file");
}
else
{
    size_t size = in->GetSize();
    char *data = new char[size];
    if ( !in->Read(data, size) )
    {
        wxLogError("Read error");
    }
    else
    {
        // file data is in the buffer
        ...
    }

    delete [] data;
    delete in;
}

http://docs.wxwidgets.org/stable/wx_wxftp.html#wxftp

答案 3 :(得分:0)

您没有定义“下载文件”对您意味着什么。

如果您想使用HTTP检索某些内容,则应使用HTTPlibcurl客户端库,并发出相应的HTTP GET请求。