2010-04-14 5 views
4

я продлил ModelAdmin с настраиваемым полем «Скачать файл», который является ссылкой на URL в моем проекте Django, как:Джанго, как S3 проксите

http://www.myproject.com/downloads/1 

Там, я хочу служить файл, который сохраняется в S3-ведре. Файлы в ведре не являются общедоступными, и пользователь может не иметь прямого доступа к нему. Теперь я хочу

  • избегать, что файл должен быть загружен в память сервера (это мульти-ГБ-файлы)
  • избегают иметь временные файлы на сервере

Идеальным решением было бы позволить django действовать как прокси-сервер, который передает S3-куски непосредственно пользователю. Я использую boto, но не нашел возможности для потока кусков. Любые идеи?

Спасибо.

ответ

4

Вместо проксирования, почему бы не просто перенаправить?

Используйте представление django на веб-сайте www.myproject.com/downloads/1 для перенаправления HTTP на URL-адрес хранилища S3 - возможно создание ограниченных по времени URL-адресов, например. смотрите здесь http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/

Затем клиент загружает файл непосредственно из S3, но содержание остается безопасным и доступ должен прийти через ваше приложение Django

+0

Хотелось бы, чтобы были и другие ответы здесь. Мне нужно то же самое, за исключением того, что мне нужно добавить заголовок «Content-disposition: attachment». –