Как отказаться от загрузки до ее завершения в Django? - PullRequest
2 голосов
/ 17 января 2010

Я бы хотел, чтобы мое приложение Django решало, принимать или отклонять загрузку на основе заголовков запросов и / или данных сеанса. Если загрузка будет отклонена, я бы хотел, чтобы приложение сбрасывало соединение, а не тратило время на получение и сохранение потенциально большого файла, который в любом случае будет отклонен.

Промежуточное ПО Django выглядело многообещающе, но при внимательном рассмотрении выясняется, что к тому времени, когда запрос попадает в промежуточное ПО, уже слишком поздно, и вся загрузка была буферизована где-то (обычно ОЗУ или диск).

Есть ли какие-либо другие хуки или настройки, которые я мог бы использовать для достижения этой цели?

1 Ответ

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

Обработчики загрузки файлов - это то, что вам нужно: http://docs.djangoproject.com/en/dev/topics/http/file-uploads/#modifying-upload-handlers-on-the-fly

Редактировать: После просмотра кода обработчика выгрузки файлов кажется, что передан только запрос. META, а не весь объект запроса - это может содержать или не содержать информацию, которая вам нужна.

С другой стороны, вы можете теоретически восстановить данные сеанса из идентификатора сеанса, который хранится в cookie.

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