Просмотр исходного кода

删除token,增加获取文件列表与保存上传文件

xx 2 лет назад
Родитель
Сommit
ec5d3745ad
2 измененных файлов с 42 добавлено и 11 удалено
  1. 29 6
      src/module/http/request.cpp
  2. 13 5
      src/module/http/request.h

+ 29 - 6
src/module/http/request.cpp

@@ -9,10 +9,6 @@ module::request::~request()
     if (m_session != nullptr)
         delete m_session;
 }
-std::string module::request::token()
-{
-    return m_request->token();
-}
 module::session* module::request::session(const std::string& token)
 {
     if (m_session == nullptr)
@@ -45,6 +41,32 @@ void* module::request::website()
 {
     return m_request->website();
 }
+sol::table module::request::files(sol::this_state s)
+{
+    auto names = m_request->parser()->form()->names();
+    sol::state_view lua(s);
+    sol::table result_table = lua.create_table();
+
+    int count = 1;
+    for (size_t i = 0; i < names.size(); i++)
+    {
+        sol::table file = lua.create_table();
+        network::http::form_info fi;
+        if (m_request->parser()->form()->get(names[i], fi))
+        {
+            file["type"] = fi.content_type;
+            file["size"] = fi.data.size();
+            file["filename"] = fi.filename;
+            result_table[count] = file;
+            count++;
+        }
+    }
+    return result_table;
+}
+bool module::request::write_file(const std::string& name, const std::string& filepath)
+{
+    return m_request->parser()->form()->write_file(name,filepath);
+}
 void module::request::regist(sol::state* lua)
 {
     // 绑定 Request 类到 Lua
@@ -57,10 +79,11 @@ void module::request::regist(sol::state* lua)
         "remote_port", &module::request::remote_port,
         "param", &module::request::param,
         "session", &module::request::session,
-        "token", &module::request::token,
         "body_param", &module::request::body_param,
         "url_param", &module::request::url_param,
-        "body", &module::request::body
+        "body", &module::request::body,
+        "files", &module::request::files,
+        "write_file", &module::request::write_file
     );
     (*lua)["GET"] = (int)network::http::GET;
     (*lua)["POST"] = (int)network::http::POST;

+ 13 - 5
src/module/http/request.h

@@ -52,11 +52,6 @@ namespace module
         /// <returns></returns>
         ushort remote_port();
         /// <summary>
-        /// 取token
-        /// </summary>
-        /// <returns></returns>
-        std::string token();
-        /// <summary>
         /// 取session
         /// </summary>
         /// <param name="token"></param>
@@ -85,6 +80,19 @@ namespace module
         /// <returns></returns>
         void* website();
 
+        /// <summary>
+        /// 取文件列表
+        /// </summary>
+        /// <returns></returns>
+        sol::table files(sol::this_state s);
+        /// <summary>
+        /// 保存文件
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="filepath"></param>
+        /// <returns></returns>
+        bool write_file(const std::string& name,const std::string& filepath);
+
         static void regist(sol::state* lua);
     private:
         bool request_param(const std::string& name, std::string& value);