我有一个关于 nginx 上传模块和文件名的问题:
2013/02/05 21:01:55 [info] 23432#0: *5 started uploading file "kvm.pdf" to "/var/www/html/0000000004" (field "file[]", content type "application/pdf"), client: 127.0.0.1, server: , request: "POST /upload/share?X-Progress-ID=0520d308f3b8c4ee5d03b20301416031 HTTP/1.1", host: "localhost", referrer: "***/upload/share?X-Progress-ID=4113dd986661cafbb8cfeede98d9dba2"
2013/02/05 21:01:55 [info] 23432#0: *5 finished uploading file "kvm.pdf" to "/var/www/html/0000000004", client: 127.0.0.1, server: , request: "POST /upload/share?X-Progress-ID=0520d308f3b8c4ee5d03b20301416031 HTTP/1.1", host: "localhost", referrer: "***/upload/share?X-Progress-ID=4113dd986661cafbb8cfeede98d9dba2"
我上传了文件 kvm.pdf,但它被保存为 0000000004,这不是一个好主意。可以改为以原始名称存储文件吗?
upload_set_form_field $upload_field_name.name "$upload_file_name";
upload_set_form_field $upload_field_name.content_type "$upload_content_type";
此行包含在配置中但它不起作用。
答案1
您没有正确使用上传模块。从上传模块文档:
该模块解析请求主体,将所有要上传的文件存储到 upload_store 指令指定的目录中。然后从主体中删除文件,并将更改后的请求传递到 upload_pass 指令指定的位置,从而允许对上传的文件进行任意处理。每个文件字段都被 upload_set_form_field 指令指定的一组字段替换。然后可以从 $upload_tmp_path 变量指定的文件中读取每个上传文件的内容,或者可以简单地将文件移动到最终目的地。
上传模块负责实际上传文件数据,然后将控制权移交给另一个位置(由您提供),该位置负责实际处理上传的数据。该0000000004
文件是临时的——如果您想永久存储上传的文件,您必须提供一个脚本,将该临时文件移动到其最终位置。您可以在该脚本中随意命名该文件。