upload_aggregate_form_field $upload_file_md5 не работает
ash2k -
ash2kk на gmail.com
Ср Мар 31 15:37:59 MSD 2010
Здравствуйте! Подскажите пожалуйста почему так (не)работает следующая
конфигурация с модулем http_upload_module:
# nginx -V
nginx version: nginx/0.8.34
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I
/usr/local/include' --with-ld-opt='-L /usr/local/lib'
--conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
--error-log-path=/var/log/nginx-error.log --user=www --group=www
--add-module=/home/ash2k/ngx_http_secure_download
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-log-path=/var/log/nginx-access.log --with-http_dav_module
--with-http_gzip_static_module
--add-module=/usr/ports/www/nginx-devel/work/nginx_mogilefs_module-1.0.3
--with-http_realip_module --with-http_stub_status_module
--add-module=/usr/ports/www/nginx-devel/work/nginx_upload_module-2.0.12
--add-module=/usr/ports/www/nginx-devel/work/nginx_uploadprogress_module-0.8
--add-module=/usr/ports/www/nginx-devel/work/ngx_http_upstream_keepalive-0.2
--add-module=/usr/ports/www/nginx-devel/work/mod_zip-1.1.5 --with-pcre
# uname -a
FreeBSD host.tld 8.0-STABLE FreeBSD 8.0-STABLE #0: Wed Feb 10 17:03:53
YEKT 2010 ...... i386
# cat ./nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
events
{
}
http
{
include mime.types;
default_type application/octet-stream;
client_max_body_size 20m;
sendfile on;
keepalive_timeout 65;
server_names_hash_bucket_size 64;
server_tokens off;
reset_timedout_connection on;
access_log off;
upload_progress app_uploads1 1m;
upload_progress app_uploads2 1m;
include app_upstreams.conf;
include conf/*.conf;
}
# cat ./conf/app.conf
server {
include conf/app_static.inc;
server_name host.ru;
access_log /var/log/nginx/app.access.log;
error_log
/var/log/nginx/app.error.log debug;
location = /get-progress {
upload_progress_content_type application/json;
upload_progress_template starting
'{"state" : "starting"}';
upload_progress_template uploading
'{"state" : "uploading", "size" : $uploadprogress_length, "uploaded" :
$uploadprogress_received}';
upload_progress_template done
'{"state" : "done", "size" : $uploadprogress_length}';
upload_progress_template error
'{"state" : "error", "code" : $uploadprogress_status}';
report_uploads app_uploads2;
}
location = /upload {
client_max_body_size 1601m;
upload_pass @upload;
upload_store /tmp/uploads;
upload_store_access user:rw group:rw all:rw;
upload_set_form_field
$upload_field_name.name "$upload_file_name";
upload_set_form_field
$upload_field_name.path "$upload_tmp_path";
# upload_aggregate_form_field
"$upload_field_name.md5" "$upload_file_md5";
# upload_aggregate_form_field
"$upload_field_name.size" "$upload_file_size";
upload_cleanup 400-599;
upload_buffer_size 64k;
upload_max_file_size 1600m;
track_uploads app_uploads2 30s;
}
location @upload {
root /home/app;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME
/home/app/enterpoint.php;
fastcgi_pass app;
}
}
в таком виде на бекэнд передается все как и предполагается (пхпшный
var_dump($_POST)):
array(2) {
["upfile_0_name"]=>
string(36) "54a2d3e04647be2082f28602f501c031.jpg"
["upfile_0_path"]=>
string(23) "/tmp/uploads/0062107219"
}
если раскомментировать строку
upload_aggregate_form_field "$upload_field_name.md5" "$upload_file_md5";
то получаю
array(0) {
}
В error логах никаких ошибок нет. В обоих случаях файл остается лежать
в /tmp/uploads/.
Строка upload_aggregate_form_field "$upload_field_name.size"
"$upload_file_size";
работает нормально - от её наличия или отсутствия поведение не
меняется, кроме передачи "upfile_0_size" в первом случае.
От объема файла не зависит.
Еще заметил что "$upload_field_name.name" становится "upfile_0_name" -
точка меняется на подчеркивание. Так должно быть?
Подробная информация о списке рассылки nginx-ru