首页 > 解决方案 > 如何让 HTTP 服务器 nginx 使用 HTTP 多部分请求上传文件?

问题描述

推荐的 nginx 模块包含在 nginx 的构建中:

https://www.nginx.com/resources/wiki/modules/upload/

nginx.conf 文件:

working_directory /usr/local/nginx;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen       80;
        client_max_body_size 100m;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log debug;

        # Upload form should be submitted to this location
        location /upload {
            # Pass altered request body to this location
            upload_pass   @test;

            # Store files to this directory
            # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist
            upload_store /tmp 1;

            # Allow uploaded files to be read only by user
            upload_store_access user:r;

            # Set specified fields in request body
            upload_set_form_field "${upload_field_name}_name" $upload_file_name;
            upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;
            upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;

            # Inform backend about hash and size of a file
            upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
            upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;

            upload_pass_form_field "^submit$|^description$";
        }

        # Pass altered request body to a backend
        location @test {
            proxy_pass   http://localhost:8080;
        }
    }
}

当我尝试上传文件时:

curl -v -i -F "data=audiorecordtext.mp4" http://192.168.1.3

(服务器在我本地的 Intranet 上),nginx 以 404 响应,未找到文件。查看 nginx 日志显示它正在尝试打开

/usr/share/nginx/html/post

这当然不存在。

如何让 Multipart Request 上传与 nginx 一起使用?我在互联网上搜索没有成功。

标签: httpnginxfile-uploadmultipart

解决方案


推荐阅读