Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2013 18:26:10

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Отдать пользователю файл с сервера

Файл хранится на сервере медиа. Можно ли в response подставить сам файл (или путь к нему), чтобы при клике на кнопку django передавал данные в функцию views, а она сразу возвращала файл а не делала что то подобное :

with open(path,'r') as fd:
    mtype = magic.from_file(path,True) # можно и без mimetypes, но позволяет сразу открывать файл в нужной программу
    response = HttpResponse(fd,content_type=mtype)
    response['Content-Disposition'] = 'attachment; filename="%s"' % # here is name of file
return response

Т.е. отдать файл без open?
как в отправке письма можно воспользоваться attach_file и отдать файл целиком а не отдавать его контент через обычный attach
P.s. извиняюсь если ответ находится в документации но я его не нашёл. Если всё очевидно то киньте ссылку на конкретную страницу.

Отредактировано SoT (Окт. 15, 2013 18:28:19)

Офлайн

#2 Окт. 16, 2013 08:40:01

alrusdi
Зарегистрирован: 2013-09-30
Сообщения: 20
Репутация: +  8  -
Профиль   Отправить e-mail  

Отдать пользователю файл с сервера

Можно отдать файл сервером, а не приложением. Для этого пользуются заголовком “X-Accel-Redirect”.
Вот здесь подробно разжевано: http://www.wellfireinteractive.com/blog/nginx-django-x-accel-redirects/
Но там есть масса нюансов, которые стоит учесть - например поддержка докачки итп:
Довольно много из них у Сагалаева раскрыто: http://softwaremaniacs.org/blog/2006/04/18/controlled-download/

Отредактировано alrusdi (Авг. 4, 2014 11:52:48)

Офлайн

#3 Окт. 16, 2013 10:53:01

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Отдать пользователю файл с сервера

Спасибо огромное ! очень исчерпывающе. И отдельное спасио за вторую ссылку .

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version