Nginx upload module (v 2.0.2) |
рус анг |
Модуль для веб-сервера nginx для процессинга аплоадов multipart/form-data (RFC 1867).
Модуль разбирает тело запроса и сохраняет все загружаемые файлы в каталог, заданный директивой upload_store. Загружаемые файлы вырезаются из тела запроса и измененный запрос после этого отправляется на location, задаваемый директивой upload_pass, позволяя обрабатывать загрузку файлов произвольным образом. Каждое файловое поле запроса может быть заменено на набор полей, задаваемый директивой upload_set_form_field. Содержимое каждого загруженного файла после этого может быть прочитано из файла, указываемого переменной $upload_tmp_path или файл может быть просто перемещен в итоговое место назначения. Временные файлы, создаваемые модулем, удаляются только в том случае, если при разборе части тела произошла ошибка, либо при ошибке записи на диск.
ВНИМАНИЕ: Модуль использует блокирующую запись, поэтому сервер должен использовать десятки или сотни воркеров в зависимости от нагрузки для предотвращения простоя соединений.
Указывает location для передачи измененного тела запроса. Файловые поля вырезаются из тела запроса и заменяются полями, задаваемые директивой upload_set_form_field.
Указывает каталог в который будут записаны временные файлы.
Указывает режим доступа с которым будут созданы временные файлы.
Задает поля формы, которые будут сгенерированы для каждого загружаемого файла в теле запроса, передаваемого бакэнду. Как имя так и значение могут содержать переменные nginx, а так же следующие специальные переменные:
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";
Размер буфера, который будет использован для записи данных на диск.
Указывает максимальную длину заголовка части тела. Определяет размер буфера, который будет использован для аккумулирования этих заголовков.
server { client_max_body_size 100m; listen 80; server_name localhost; # Upload form should be submitted to this location location /upload { # Pass altered request body to this location upload_pass /test; # Store files to this location upload_store /tmp; # 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"; } # Pass altered request body to a proxy location /test { proxy_pass http://localhost:8080; } }
<html> <head> <title>Test upload</title> </head> <body> <h2>Select files to upload</h2> <form name="upload" method="POST" enctype="multipart/form-data" action="/upload"> <input type="file" name="file1"><br> <input type="file" name="file2"><br> <input type="file" name="file3"><br> <input type="file" name="file4"><br> <input type="file" name="file5"><br> <input type="file" name="file6"><br> <input type="submit" name="submit" value="Upload"> <input type="hidden" name="test" value="value"> </form> </body> </html>
Версия 2.0.2: tar.gz zip MD5 SHA1
или перейти в каталог загрузки
Скачать исходники по ссылке выше.
tar xvzf nginx_upload_module-2.0.1.tar.gz
Сконфигурировать nginx с дополнительным модулем:
cd <путь к исходникам nginx> ./configure --add-module=<путь к исходникам модуля> make make install
nginx -- это веб-сервер разработанный Игорем Сысоевым.
Описанный модуль является дополнением к веб-серверу nginx и является самостоятельным продуктом. Лицензия описанного модуля BSD Вы должны были получить копию лицензии вместе с исходными кодами модуля.
Valery Kholodkov valery+nginx@grid.net.ru
Пожалуйста, используйте расширение адреса при составлении письма мне.
Copyright (C) 2006, 2008 Valery Kholodkov
Отметки о копирайте модуля см. в исходных кодах модуля.