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 [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
