Если ваше приложение django проксируется с помощью nginx, вы можете использовать x-accell-redirect . Вам нужно передать специальный заголовок в вашем ответе, nginx перехватит это и начнет обслуживать файл, вы также можете передать Content-Disposition в том же ответе для принудительной загрузки.
Это решение хорошо, если вы хотите контролировать, какие пользователи получают доступ к этим файлам.
Вы также можете использовать такую конфигурацию:
#files which need to be forced downloads
location /static/high_res/ {
root /project_root;
#don't ever send $request_filename in your response, it will expose your dir struct, use a quick regex hack to find just the filename
if ($request_filename ~* ^.*?/([^/]*?)$) {
set $filename $1;
}
#match images
if ($filename ~* ^.*?\.((jpg)|(png)|(gif))$) {
add_header Content-Disposition "attachment; filename=$filename";
}
}
location /static {
root /project_root;
}
Это приведет к загрузке всех изображений в папке high_res (MEDIAROOT / high_rest). А для других статических файлов он будет вести себя как обычно. Обратите внимание, что это модифицированный быстрый взлом, который работает для меня. Это может иметь последствия для безопасности, поэтому используйте его с осторожностью.