gpt4 book ai didi

c++ - 如何使用wxwidgets下载二进制文件

转载 作者:行者123 更新时间:2023-11-30 05:42:11 28 4
gpt4 key购买 nike

我找到了这个下载文件的代码片段:

wxURL url(wxT("http://www.example.com/file.txt"));
if(url.GetError()==wxURL_NOERR)
{
wxString htmldata;
wxInputStream *in = url.GetInputStream();

if(in && in->IsOk())
{
wxStringOutputStream html_stream(&htmldata);
in->Read(html_stream);
wxLogMessage(htmldata);
}
delete in;
}

但首先它只是记录文件的内容并且只针对文本文件。但是我需要下载 *.exe 文件以便稍后执行。所以我需要调整此代码以处理二进制数据,并将此数据保存到磁盘上的文件中。为了让我理解这里发生了什么,这里使用了太多流。请帮忙。

最佳答案

我之前写过下面的代码...这可以很好地在任何平台上下载二进制文件。

 /** START */
// ex) ht tp://mysite.com/mypath.jpg
wxString path = wxT("/mypath.jpg");
wxString server = wxT("mysite.com");

wxHTTP http;
http.SetHeader(_T("Content-type"), contentType);
http.SetTimeout(10);

// wxString imageFilePath = wxT("/tmp/image.jpg");
wxFileOutputStream output(imageFilePath);
wxDataOutputStream store(output);

if (http.Connect(server, 80))
{
wxInputStream *stream;
stream = http.GetInputStream(path);

if (stream == NULL)
{
output.Close();
}
else
{
unsigned char buffer[1024];
int byteRead;

// receive stream
while (!stream->Eof())
{
stream->Read(buffer, sizeof(buffer));
store.Write8(buffer, sizeof(buffer));
byteRead = stream->LastRead();
if (byteRead <= 0)
{
break;
}
}

output.Close();
}
}
else
{
output.Close();
}

关于c++ - 如何使用wxwidgets下载二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com