lua-resty-post
Openresty 解析 HTTP POST 数据的工具
$ opm get antonheryanto/lua-resty-post
lua-resty-post
Openresty HTTP post 工具
状态
该库已进行 Beta 测试并在生产环境中使用。
描述
该库使用 lua-resty-upload 处理 HTTP,该库速度非常快且内存占用低,它处理多种类型的 HTTP POST 并将其转换为 Lua 表格。
安装
下载或克隆此仓库
复制或链接到 openresty/lualib/resty/ 或任何你的 lua_package_path
如何使用
local resty_post = require 'resty.post'
local post = resty_post:new()
local m = post:read()
-- return table with all form value and file
文件上传
支持多个文件上传
文件信息使用字段名称作为键存储在 files 属性中
{ files = { file1 = { -- input name name = "a.txt", type = "text/plain", size = 10240, tmp_name = 1454551131.5459 }, file2 = { name = "b.png", type = "image/png", size = 20480, tmp_name = 1454553275.6401 } }
定义文件上传路径,或默认为日志目录(遵循 ngx.config.prefix)
默认文件将保存为临时名称(需要移动操作到目标位置)
local resty_post = require "resty.post" local post = resty_post:new({ path = "/my/path", -- path upload file will be saved chunk_size = 10240, -- default 8192 no_tmp = true, -- if set original name will uses or generate random name name = function(name, field) -- overide name with user defined function return name.."_"..field end }) post:read()
数组输入
支持多个相同名称的输入
这对于 HTML 输入复选框或多模式选择等很有用
<input type="checkbox" name="check_multi" value="1">
<input type="checkbox" name="check_multi" value="2">
<select name="select_multi" multiple>
<option value="">Please select</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
转换为
{
check_multi = { 1, 2 },
select_multi = { 1, 2 }
}
当选中一个类似于 ngx.req.get_post_args
{
check_multi = 2,
select_multi = 1
}
支持带名称的数组输入
这就像支持模仿类和属性的输入,可用于处理 PHP 风格(动态语言)和 ASP.NET MVC 绑定风格(使用类的静态语言)的动态输入支持。
<div class="name-index">
<input name="name[1]" value="Foo">
<input name="name[0]" value="Bar">
</div>
<div class="user-single">
<input name="user.title" value="Mr.">
<input name="user[name]" value="Foo Bar">
</div>
<div class="user-static">
<input name="users[0].title" value="Mr.">
<input name="users[0].name" value="John Do">
</div>
<div class="user-dynamic">
<input name="users[0][title]" value="Ms.">
<input name="users[0][name]" value="Jane Do">
</div>
转换为
{
name = {
"Bar",
"Foo"
},
user = {
title = "Mr.",
name = "Foo Bar"
},
users = {
{
title = "Mr.",
name = "John Do"
},
{
title = "Ms.",
name = "Jane Do"
}
}
}
版权和许可证
此模块根据 BSD 许可证许可。
版权所有 (C) 2015,作者 Anton Heryanto Hasan。
保留所有权利。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改。
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
本软件由版权持有人和贡献者“按原样”提供,并且不提供任何明示或暗示的担保,包括但不限于适销性和特定用途适用性的暗示担保。在任何情况下,版权持有人或贡献者均不对任何直接的、间接的、偶然的、特殊的、惩戒性的或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论这些损害是基于合同、严格责任或侵权(包括疏忽或其他原因)引起的,即使已被告知可能发生此类损害。
另请参阅
作者
Anton Heryanto
许可证
2bsd
版本
-
Openresty 解析 HTTP POST 数据的工具 2021-06-24 10:53:35
-
Openresty 解析 HTTP POST 数据的工具 2016-10-01 03:44:25