set_form_input_multi

指令 `set_form_input_multi` 用于将表单提交中的多个值读取到 NGINX 变量中。

语法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 表单字段(例如复选框或多选下拉框)时,这一点尤其有用。

该指令可以放在 httpserverlocation 上下文中,使其在配置位置上具有灵活性。使用语法是 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_sizeclient_body_buffer_size 正确配置客户端请求体大小,以避免输入数据被截断。

请记得使用 array_join,如果您想将结果数组的值转换为单个字符串以便进一步处理。

← 返回所有指令