HTTP与进度信息上传,在C ++(波科/升压)(Http upload with progress

2019-09-28 18:56发布

我想一个大文件上传到我的HTTP服务器。

我需要显示上传进度。

我怎样才能得到多少字节在上传时发送?

需要将事件发送到我的GUI。

在POCO,我不知道放在哪里回调。

_session.sendRequest(_request)
_session.receiveResponse(_response)

有任何想法吗? 或链接,谢谢!

Answer 1:

这是“部分” 08中讨论讽刺的是我期待的完全一样的东西。

http://sourceforge.net/mailarchive/message.php?msg_id=20619477


编辑:12年2月14日

这是不是最好的,但它的作品...可能会最好的一次写1K块。 我想看看你的建议。

std::string szMessage;
.... /* fill your szMessage such as with a Form.write()  */ .. 

CountingOutputStream _cos( _session.sendRequest(_request) )    
std::streamsize len = 0;

string::iterator it;
for ( it=szMessage.begin() ; it < szMessage.end(); it++ ) {
     len ++;
     _cos.put(*it);
     if(len %4096 ==0)
            cout << "len: " << len << endl;
}
cout << "Chars printed: " << len << endl;

std::istream& rsout = _session.receiveResponse(_response)
std::ostringstream ostr;
StreamCopier::copyStream(rsout, ostr);
//    Retrieve response is not necessary if we have the resp code
std::cout << endl; response.write(cout);
std::cout << ostr.str();
int code = response.getStatus();
if (code != nRespCode) {
   stringstream s;
   s << "HTTP Error(*): " << code;
   throw Poco::IOException(s.str());
}


文章来源: Http upload with progress info, in C++ (Poco/Boost)