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
Отметки о копирайте модуля см. в исходных кодах модуля.