Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Хочется сделать ст	атическую раздачу файлов, но с произвольными 	именами
 
 
On Fri, Nov 13, 2009 at 11:37:54PM +0300, Igor Sysoev wrote:
> On Fri, Nov 13, 2009 at 11:15:55PM +0300, Vitaly Puzrin wrote:
> 
> > Есть форум, куда юзеры льют картинки и прочую лабуду. Естественно,
> > каждый называет файлы "как умеет". Сейчас "настоящие" имена  хранятся
> > в базе, а на диске имена содержат только циферки. Все раздается
> > скриптом -  генерятся хедеры с правильным именем, и делается
> > accel-redirect на бинарник.
> > 
> > Хочется вызов скрипта исключить совсем. Но хранить произвольные имена
> > в файловой системе - стремно. Могут и на японском что-нибудь запихать,
> > и файлы с одинаковыми именами.
> > 
> > Существует ли какое-то красивое решение? Пока думал, что можно на
> > вебстраничках нагенерить хитрых ссылок, где не только путь к
> > бинарнику, но и желаемое имя, под которым надо отдать. А дальше
> > встроенным перлом прямо в nginx заголовки составлять и доклеивать
> > блоб. Не уверен, что это самый разумный метод. Может кто подскажет
> > получше?
> 
> Для ссылок вида "/files/1/2/345678?name=хитрое%20японское%20имя" можно
> без перла:
> 
>   location /files/ {
>       root         /path/to/files;
>       add_header   Content-Disposition 'attachment; filename="$arg_name"';
>   }
Или так:
 /files/1/2/345678/хитрое%20японское%20имя
   location ~ ^(/files/.+)/([^/]+)$ {
       alias        /path/to/files$1;
       add_header   Content-Disposition 'attachment; filename="$2"';
   }
-- 
Игорь Сысоев
http://sysoev.ru
 
 |