新增支持http文件上传功能

This commit is contained in:
xiongziliang
2026-07-08 10:45:55 +08:00
parent b44e5b0731
commit 92681fe6e1
10 changed files with 181 additions and 10 deletions

View File

@@ -130,12 +130,17 @@ const string &Parser::content() const {
return _content;
}
const HttpBody::Ptr &Parser::body() const {
return _body;
}
void Parser::clear() {
_method.clear();
_url.clear();
_params.clear();
_protocol.clear();
_content.clear();
_body = nullptr;
_headers.clear();
_url_args.clear();
}
@@ -152,6 +157,10 @@ void Parser::setContent(string content) {
_content = std::move(content);
}
void Parser::setBody(HttpBody::Ptr body) {
_body = std::move(body);
}
StrCaseMap &Parser::getHeader() const {
return _headers;
}

View File

@@ -14,6 +14,7 @@
#include <map>
#include <string>
#include "Util/util.h"
#include "Http/HttpBody.h"
namespace mediakit {
@@ -95,6 +96,7 @@ public:
// 获取http body或sdp [AUTO-TRANSLATED:d6fd1803]
// Get http body or sdp
const std::string &content() const;
const HttpBody::Ptr &body() const;
// 清空,为了重用 [AUTO-TRANSLATED:cb7a16dd]
// Clear, for reuse
@@ -111,6 +113,7 @@ public:
// 重新设置content [AUTO-TRANSLATED:ac8fc8c0]
// Reset content
void setContent(std::string content);
void setBody(HttpBody::Ptr body);
// 获取header列表 [AUTO-TRANSLATED:90d90b03]
// Get header list
@@ -131,6 +134,7 @@ private:
std::string _url;
std::string _protocol;
std::string _content;
HttpBody::Ptr _body;
std::string _params;
mutable StrCaseMap _headers;
mutable StrCaseMap _url_args;

View File

@@ -61,6 +61,7 @@ const string kBroadcastMediaChanged = "kBroadcastMediaChanged";
const string kBroadcastRecordMP4 = "kBroadcastRecordMP4";
const string kBroadcastRecordTs = "kBroadcastRecordTs";
const string kBroadcastHttpRequest = "kBroadcastHttpRequest";
const string kBroadcastBeforeHttpRequest = "kBroadcastBeforeHttpRequest";
const string kBroadcastHttpAccess = "kBroadcastHttpAccess";
const string kBroadcastOnGetRtspRealm = "kBroadcastOnGetRtspRealm";
const string kBroadcastOnRtspAuth = "kBroadcastOnRtspAuth";

View File

@@ -57,6 +57,11 @@ extern const std::string kBroadcastRecordTs;
extern const std::string kBroadcastHttpRequest;
#define BroadcastHttpRequestArgs const Parser &parser, const HttpSession::HttpResponseInvoker &invoker, bool &consumed, toolkit::SockInfo &sender
// 收到http PUT/POST请求body前的广播监听者可以设置body以接管请求体
// Broadcast before receiving http PUT/POST request body, listener can set body to take over the request body
extern const std::string kBroadcastBeforeHttpRequest;
#define BroadcastBeforeHttpRequestArgs const Parser &parser, HttpBody::Ptr &body, HttpSession &sender
// 在http文件服务器中,收到http访问文件或目录的广播,通过该事件控制访问http目录的权限 [AUTO-TRANSLATED:2de426b4]
// In the http file server, broadcast for receiving http access to files or directories. Control access permissions to the http directory through this event.
extern const std::string kBroadcastHttpAccess;