Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Poco向Web服务器发送图像_C++_Http_Poco Libraries - Fatal编程技术网

C++ 使用Poco向Web服务器发送图像

C++ 使用Poco向Web服务器发送图像,c++,http,poco-libraries,C++,Http,Poco Libraries,我正在尝试使用POCO::Net::HTMLForm将图片上传到appengine。 请参阅下面的代码。我的问题是imagedata没有发送。令牌和字符名(开放源代码操作rpg的名称)的传输没有任何问题。知道我会做错什么吗 提前感谢:) c++代码: // prepare session Poco::URI uri(backend_url + "/api/update_character_avatar"); Poco::Net::HTTPC

我正在尝试使用POCO::Net::HTMLForm将图片上传到appengine。 请参阅下面的代码。我的问题是imagedata没有发送。令牌和字符名(开放源代码操作rpg的名称)的传输没有任何问题。知道我会做错什么吗

提前感谢:)

c++代码:

            // prepare session
        Poco::URI uri(backend_url + "/api/update_character_avatar");
        Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());

        // prepare path
        std::string path(uri.getPathAndQuery());
        if (path.empty()) path = "/";

        Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_POST, path);
        Poco::Net::HTMLForm form;
        form.add("token", sw_token);
        form.add("charname", sw_charname);

        Poco::Buffer<char> imgBuffer(mImgPtr->size());
        mImgPtr->read(imgBuffer.begin(), imgBuffer.end()-imgBuffer.begin());
        std::string s(imgBuffer.begin(), mImgPtr->size());

        std::ostringstream out;
        Poco::Base64Encoder b64enc(out);
        b64enc.write(imgBuffer.begin(), imgBuffer.end()-imgBuffer.begin());
        b64enc.close();
        Poco::Net::StringPartSource *prtsrc = new Poco::Net::StringPartSource(out.str());
        form.addPart("imagedata", prtsrc);

        form.prepareSubmit(req);
        std::ostream& send = session.sendRequest(req);
        form.write(send);

        // get response
        Poco::Net::HTTPResponse res;

        // print response
        std::istream &is = session.receiveResponse(res);
        std::ostringstream stream;
        Poco::StreamCopier::copyStream(is, stream);
        std::cout << stream.str() << std::endl;

我希望imagedata显示为post字段而不是get字段,因此我会尝试
imagedata=self.request.post(“imagedata”)
。或者尝试将其发布到服务器,该服务器将允许您设置断点并检查请求的内容。

很抱歉,我无法理解您在这段代码中到底想做什么。上传文件有很多无用的步骤,因为只需使用HTMLForm类就可以完成。以下是执行此操作所需的最低代码-

相应的上传服务器使用标准PHP代码上传HTML表单文件

class UpdateCharacterAvatarHandler(webapp2.RequestHandler):
def post(self):
    token = self.request.get("token")
    charname = self.request.get("charname")
    imagedata = self.request.get("imagedata")

    logging.error(self.request.body)

    self.response.write("test")
    HTTPRequest request(HTTPRequest::HTTP_POST, "/fileupload/upload_file.php",    HTTPMessage::HTTP_1_1);
    HTMLForm form;
    form.setEncoding(HTMLForm::ENCODING_MULTIPART);
    form.addPart("file", new FilePartSource("/home/abc/Pictures/sample.png"));
    form.prepareSubmit(request);

    HTTPClientSession *httpSession = new HTTPClientSession("localhost");
    httpSession->setTimeout(Poco::Timespan(20, 0));
    form.write(httpSession->sendRequest(request));        

    Poco::Net::HTTPResponse res;
    std::istream &is = httpSession->receiveResponse(res);
    Poco::StreamCopier::copyStream(is, std::cout);