Re: Вопрос по client body in file only в контексте file upload

Maxim Dounin mdounin at mdounin.ru
Mon Oct 14 14:03:00 UTC 2013


Hello!

On Mon, Oct 14, 2013 at 08:07:57AM -0400, naive wrote:

> > Каталог для хранения временных файлов не предназначен для того, 
> > чтобы в нём держали файлы дольше, чем это необходимо для обработки 
> > этих файлов.  Фатальных проблем при коллизиях не возникнет, см. 
> > выше, но и хорошего тоже немного.
> 
> По идее, весь метод с использованием client_body_in_file_only и
> client_body_temp_path изначально не предназначен для handling file upload.

Директива client_body_in_file_only как раз предназначена для того, 
чтобы лишний раз не гонять тело запроса в рамках одной машины, а 
записать его на диск и передать на обработку бекенду уже файл.  И 
та же функциональность используется в модуле DAV, но уже в рамках 
самого nginx'а.

> Тем не менее, если уж использовать эту возможность, то хотелось бы избежать
> лишних действий (перемещения файлов/смены имен) и установки чего-то кроме
> nginx-extras на storage-машину.

Где вы видите лишнее действие?  Файл записывается в каталог для 
временных файлов под временным именем, после окончания загрузки, 
если всё хорошо, - перемещается куда надо под постоянным именем 
и/или обрабатывается иначе.  Если вдруг во временном каталоге 
остаются файлы на время большее, чем нужно для обработки - это 
повод предположить наличие проблемы и заняться её решением.

Перемещение файла в рамках одной файловой системы - крайне дешёвая 
операция, не стоит на ней экономить.  На неудобстве работы с 
получившейся помойкой, а равно на попытках найти свободное имя 
для очередного файла, если файлов будет действительно много, вы 
потеряете больше.

Что до установки "чего-то", то в указанном вами пакете есть как 
минимум два встроенных в nginx скриптовых языка, на которых можно 
сделать любую обработку.

[...]

> > Возможность влиять на имена файлов есть и сейчас, она подробно 
> > документирована тут:
> > 
> > http://nginx.org/r/client_body_temp_path
> > 
> > А именно - можно задавать желаемую иерархию подкаталогов.  Более 
> > никаких возможностей для влияния не планируется.
> 
> Речь как раз шла про имена файлов, поскольку level 1-3 помогает лишь решить
> вопрос максимального количества файлов в папке, но не их общего
> максимального количества и именования.

Я прекрасно понял ваш вопрос, и ответил на него максимально 
подробно.  Вопросов, которые вы пытаетесь решить - не стоит  
при использовании client_body_temp_path по назначению.  И по этой 
же причине не сущетсвует планов по решению этих вопросов.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru