upload_set_form_field

`upload_set_form_field` 指令通过指定哪些传入文件要被存储以及它们在后续请求中应如何表示来修改请求字段。

语法upload_set_form_field field_name value;
默认值none
上下文http, server, location, if in location, limit_except
参数2

说明

upload_set_form_field 指令是 NGINX 上传模块的一部分,允许用户定义哪些文件字段应在请求体中被替换为特定的表单字段,这些字段引用已上传文件的临时存储位置。该指令接受两个参数:表示已上传文件的表单字段名,以及包含该字段值的变量,通常是上传过程生成的文件路径。通过使用该指令,NGINX 可以无缝地将文件上传整合到 Web 应用的处理逻辑中,允许控制在修改后的请求中如何发送文件元数据。

当发生上传时,文件首先存储在由 upload_store 指令定义的临时位置。文件上传完成后,原始请求体会被修改,将文件字段替换为由 upload_set_form_field 定义的新字段。这些新字段包含对已上传文件的引用,便于在请求生命周期的后续阶段更容易地访问它们。该机制对于需要在其工作流中处理文件上传的应用程序特别有用,因为它允许在请求中更好地封装文件数据,而无需在后续请求中直接发送原始文件内容。

例如,假设有一个应用允许用户上传个人头像,并且希望在表单数据中使用特定键来表示该已上传的图像以便进一步处理。通过使用 upload_set_form_field,您可以准确指定应使用哪个表单字段来引用已上传文件的路径或元数据,从而确保处理逻辑与已上传内容无缝配合,避免在请求载荷中直接处理原始文件时常见的复杂性。

配置示例

location /upload {
    upload_pass /upload/save;
    upload_set_form_field "profile_picture" "$upload_tmp_path";
    upload_store /tmp/uploads;
}

确保在 value 参数中使用的文件路径是正确的;格式不正确的路径会导致错误或意外行为。

注意 upload_store 指令是否已正确配置,因为缺失或不正确的存储路径可能导致上传失败。

← 返回所有指令