bool http_servlet::doUpload(acl::HttpServletRequest& req, acl::HttpServletResponse& res) { // 获得输入流 acl::istream& in = req.getInputStream(); acl::string buf; bool finish = false; //logger(">>>>>>>>>>read: %lld, total: %lld<<<<<", // read_length_, content_length_); // 读取 HTTP 客户端请求数据 while (content_length_ > read_length_) { if (in.read_peek(buf, true) == false) break; //if (buf.empty()) // break; // printf(">>>size: %ld, space: %ld\r\n", // (long) buf.size(), (long) buf.capacity()); if (fp_.write(buf) == -1) { logger_error("write error %s", acl::last_serror()); (void) doReply(req, res, "write error"); return false; } read_length_ += buf.size(); // 将读得到的数据输入至解析器进行解析 if (!finish && mime_->update(buf, buf.size()) == true) finish = true; } if (in.eof()) { logger_error("read error"); return false; } return true; }