如何使用wxHTTP POST请求上传存储在wxImage或wxBitmap中的图像? 我知道我可以用某种方式做到:
wxImage::SaveFile (wxOutputStream &stream, wxBitmapType type) and
wxHTTP::SetPostBuffer (const wxString &contentType, const wxMemoryBuffer &data)
但我刚开始使用cpp和wx。
答案 0 :(得分:2)
你快到了。缺少的部分是一些实现wxOutputStream
接口的类,然后您可以使用SetPostBuffer()
方法发送其内容。
您可以查看wxOutputStream
here的所有提供的实施。您似乎在寻找wxMemoryOutputStream
。
因此,完整的代码部分将是这样的:
wxMemoryOutputStream stream;
if (!myImage.SaveFile(stream, wxBITMAP_TYPE_PNG))
;// TODO: Handle error
SetPostBuffer("image/png", *stream.GetOutputStreamBuffer());
答案 1 :(得分:0)
这就是我做的。有点冗长,但减去错误检查...... 成员变量是wxURLs。
// ok now read the data into a buffer again
wxMemoryBuffer buf;
{
// don't have charBuf around for too long
wxFile f(someFileName);
char charBuf[f.Length()];
f.Read(charBuf, f.Length());
buf.AppendData(charBuf, f.Length());
}
// upload!
wxHTTP post;
post.SetPostBuffer("application/gzip", buf);
post.Connect(mDestUrl.GetServer()):
wxInputStream *iStream = post.GetInputStream(mDestUrl.GetPath() + "?" + mDestUrl.GetQuery());
// put result into stream
wxString res;
wxStringOutputStream oStream(&res);
iStream->Read(oStream);
wxLogDebug(TAG " server replied: " + res);
请注意,wxHttp不执行分段上传。例如,在PHP中,您可以通过
访问数据$postdata = file_get_contents("php://input");