【发布时间】:2012-12-07 17:38:11
【问题描述】:
我正在尝试将图像上传到远程 Web 服务器。我使用过 HTMLForm 和 FilePartSource。我能够成功地将图像上传到本地服务器(即 loclhost),但是当我尝试将其上传到远程服务器时,从远程 Web 服务器收到的响应是“需要 411 长度”。 我试图设置 request.setContentLength(sizeofimagefile) 但仍然是同样的问题。 任何人都可以指导我解决问题或。 这是我的代码。
HTMLForm htmlform;
htmlform.set("aaaaaa", "bbbbbbb");
htmlform.set("cccccc", "ddddddd");
htmlform.setEncoding(HTMLForm::ENCODING_MULTIPART);
PartSource * pFileSrc = new FilePartSource("filename", "application/octet-stream");
std::istream& mystream = pFileSrc->stream();
mystream.seekg(0, std::ios::end);
int uiLength = mystream.tellg();
htmlform.addPart("file", pFileSrc);
URI uri("yyy");
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest post_req(Poco::Net::HTTPRequest::HTTP_POST,"xxx",HTTPMessage::HTTP_1_1);
post_req.setKeepAlive(true);
htmlform.prepareSubmit(post_req);
std::ostream& oustr = session.sendRequest(post_req);
htmlform.write(oustr);
HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::cerr << rs.rdbuf();
提前致谢
【问题讨论】:
-
在 setContentLength(sizeofimagefile) 中,您是否在请求数据块中包含了随图像一起发送的参数“aaaaaa”和“cccccc”的大小?如果您对表单使用 POST 方法,这些参数将转到与您尝试上传的图像相同的数据块。
标签: c++ image upload poco-libraries