ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Hello!

On Sun, Oct 13, 2013 at 05:36:51PM -0400, naive wrote:

> Доброй ночи!
> 
> Возник вопрос по использованию client_body_in_file_only для обработки file
> upload.
> 
> Есть подробный how-to, раскрывающий данную тему:
> https://coderwall.com/p/swgfvw
> 
> Однако, возникает вопрос - что произойдёт, если при записи файла в
> client_body_temp_path файл с подобным именем будет уже существовать?
> Такая ситуация, как мне кажется, может произойти в случаях:
> 1. количество файлов станет >= 10^10
> 2. файлы будут восстановлены из бекапа, при этом id будет высчитываться
> "по-порядку"
> 3. случайно сгенерированный id совпадёт с именем уже существующего файла
> 
> Возможные варианты:
> 1. ошибка
> 2. перезапись файла
> 3. генерация нового id, при наличии ранее созданного файла с таким же именем
> (если кол-во файлов <10^10)

Если при создании временного файла nginx натыкается на уже 
существующий файл, то он пробует ещё раз, выбрав другое имя файла.  
Подробнее можно почитать в src/core/ngx_files.c, в функции 
ngx_create_temp_file().

> Вопрос, на который я хочу ответить - можно ли хранить uploaded files прямо в
> client_body_temp_path или же необходим CLI-скрипт, перемещающий файлы в
> другую директорию с гарантированно уникальным id или проверкой
> уникальности?

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

> И смежный подвопрос - когда появится возможность влиять на
> client_body_temp_path и имена файлов, которые генерятся при записи
> (насколько я понимаю, сейчас они имеют вид [\d]{10})?

Возможность влиять на имена файлов есть и сейчас, она подробно 
документирована тут:

http://nginx.org/r/client_body_temp_path

А именно - можно задавать желаемую иерархию подкаталогов.  Более 
никаких возможностей для влияния не планируется.

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

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.