осуществляется доступ к загружаемому файлу с помощью django + nginx + apache mod_wsgi - PullRequest
3 голосов
/ 04 мая 2009

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

Итак, мой вопрос, есть ли способ проверить / получить доступ к общему байту загружаемого файла?

спасибо

Ответы [ 4 ]

4 голосов
/ 04 мая 2009

Вы можете отслеживать процесс загрузки, написав свой собственный обработчик загрузки Django. Все, что вам нужно сделать, это подкласс django.core.files.uploadhandler.FileUploadHandler и реализовать методы receive_data_chunk и file_complete.

Документация обработчика выгрузки Django предоставляет вам необходимую информацию.

2 голосов
/ 06 декабря 2009

Это зависит от настроек вашего сервера. Если вы используете Apache с mod_python, то файлы передаются в ваш процесс Django по мере их поступления. Но если вы запускаете Django за веб-сервером, используя wsgi или fastcgi, то весь файл будет буферизован сервером до того, как django включится. Тогда приведенное выше решение не сработает.

Это "специально", потому что связывание процессов fastcgi, ожидающих загрузки файлов, было бы большой тратой. Поэтому вместо этого вы должны использовать серверный модуль, такой как http://redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress для Lighttpd, который реализует представление upload_progress для вас на сервере. Или http://wiki.nginx.org/NginxHttpUploadProgressModule для nginx.

1 голос
/ 12 января 2010

Только что нашел модуль прогресса загрузки для apache:

http://github.com/drogus/apache-upload-progress-module

Что я не знаю, так это как (или работает) ли это с django & mod_wsgi.

1 голос
/ 05 мая 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...