我希望我的 Django 应用程序根据请求标头和/或会话数据来决定是接受还是拒绝上传。如果要拒绝上传,我希望应用程序重置连接,而不是浪费时间接收和存储无论如何都会被拒绝的潜在大文件。
Django 中间件看起来很有希望,但仔细检查后发现,当请求到达中间件时已经为时已晚,并且整个上传都被缓冲在某个地方(通常是 RAM 或磁盘)。
我可以使用其他任何钩子或设置来实现这一点吗?
我希望我的 Django 应用程序根据请求标头和/或会话数据来决定是接受还是拒绝上传。如果要拒绝上传,我希望应用程序重置连接,而不是浪费时间接收和存储无论如何都会被拒绝的潜在大文件。
Django 中间件看起来很有希望,但仔细检查后发现,当请求到达中间件时已经为时已晚,并且整个上传都被缓冲在某个地方(通常是 RAM 或磁盘)。
我可以使用其他任何钩子或设置来实现这一点吗?
文件上传处理程序是您正在寻找的东西:http: //docs.djangoproject.com/en/dev/topics/http/file-uploads/#modifying-upload-handlers-on-the-fly
编辑:查看文件上传处理程序代码后,它似乎只传递了 request.META,而不是整个请求对象——这可能包含也可能不包含您需要的信息。
另一方面,理论上您可以从存储在 cookie 中的会话 id 重建会话数据。