晚上好, 我需要将静态内容上传到nginx服务器1.9(因此上传模块不能使用此版本)。我已经阅读了文章"Nginx direct file upload without passing them through backend"并按照说明一步一步地进行了操作。一切都适合我,除了nginx数据目录中的文件名。文件名看起来像&00; 0000000001',' 0061565403'等等。 如何使用正确的名称保存文件? 这是我的nginx位置配置:
location /upload {
limit_except POST { deny all; }
client_body_temp_path /data/;
client_body_in_file_only on;
client_body_buffer_size 128K;
client_max_body_size 50M;
proxy_pass_request_headers on;
proxy_set_header content-type "text/html";
proxy_set_body $request_body_file;
proxy_pass http://localhost:8080/
proxy_redirect off;}
答案 0 :(得分:2)
您可以在客户端使用HTTP标头传递正确的名称(无论是什么),例如:
Correct-Filename: my-correct-filename
由于您正在使用proxy_pass_request_headers on
,因此在后端可以看到标题,您可以在保存文件时使用它。但是,使用标题时,文件名仅限于使用ASCII字符,请参阅this answer。
答案 1 :(得分:0)
我能够执行此操作的唯一方法是将原始文件名作为参数发送(我使用JS将文件名复制到隐藏字段),然后在服务器上(如果我正在存储临时文件)到我们的文件系统,我使用该参数在将文件保存到其“适当”位置的过程中重命名该文件。
不漂亮,但是可以。