nginx之带有 nginx 上传模块和分块上传的空白 POST

yyy_WW 阅读:49 2024-02-27 23:08:18 评论:0

我正在使用 nginx upload module为 PHP 应用程序接受大量上传。我已经按照 this blog post 配置了 nginx (根据我的需要修改)。

这是我的 nginx 配置的(适用部分):

server { 
 
    # [ ... ] 
 
    location /upload { 
        set $upload_field_name "file"; 
        upload_pass /index.php; 
        upload_store /home/example/websites/example.com/storage/uploads 1; 
        upload_resumable on; 
        upload_max_file_size 0; 
        upload_set_form_field $upload_field_name[filename] "$upload_file_name"; 
        upload_set_form_field $upload_field_name[path] "$upload_tmp_path"; 
        upload_set_form_field $upload_field_name[content_type] "$upload_content_type"; 
        upload_aggregate_form_field $upload_field_name[size] "$upload_file_size"; 
        upload_pass_args on; 
        upload_cleanup 400-599; 
        client_max_body_size 200M; 
    } 
} 

在客户端 JavaScript 中,我使用 8MB block 。

使用此配置,我可以上传任何一个 block 或更小的文件。但是,当我尝试上传任何超过一个 block 的文件时,我从服务器获得的每个中间 block 的响应都是空白的,最后一个 block 触发了对 PHP 应用程序的调用,没有任何传入的 POST数据。

我错过了什么?

请您参考如下方法:

事实证明@Brandan的博文实际上遗漏了一个重要指令:

upload_state_store /tmp; 

我添加了它,现在一切正常。


标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号