set_form_input_multi
指令 `set_form_input_multi` 用于将表单提交中的多个值读取到 NGINX 变量中。
NGINX form input module
·
httpserverlocation
语法set_form_input_multi $variable [argument];
默认值none
上下文http, server, location
参数1-2
说明
set_form_input_multi 指令是 NGINX 表单输入模块的一部分,专门用于处理编码为 application/x-www-form-urlencoded 的 HTTP POST 和 PUT 请求的数据。与其对应的 set_form_input 不同,后者为指定变量获取单个值,set_form_input_multi 允许从请求体中检索与某个键相关的所有值。当处理允许多选的 HTML 表单字段(例如复选框或多选下拉框)时,这一点尤其有用。
该指令可以放在 http、server 或 location 上下文中,使其在配置位置上具有灵活性。使用语法是 set_form_input_multi $variable [argument];,其中 $variable 是将被赋值的 NGINX 变量名,可选的 argument 指定要从请求中读取的表单字段。如果未提供该参数,则默认为读取与变量名本身关联的值。
当执行该指令时,它会将表单输入中所有匹配的值填充到指定的 NGINX 变量中。此行为允许在 NGINX 配置中随后使用这些值,并可以进行诸如 array_join 的转换操作(例如将多个值连接为单个字符串)以满足需要。
配置示例
location /submit {
client_max_body_size 1m;
client_body_buffer_size 1m;
set_form_input_multi $data; # Read all 'data' fields into $data
set_form_input_multi $selected_items items; # Read all fields named 'items' into $selected_items
array_join ' ' $data; # Combine values into a single string
}⚠
确保通过 client_max_body_size 和 client_body_buffer_size 正确配置客户端请求体大小,以避免输入数据被截断。
⚠
请记得使用 array_join,如果您想将结果数组的值转换为单个字符串以便进一步处理。