每当我们尝试将大文件上传到我们的Django后端时,我的团队就会出现413个错误:413 Payload too large
我们无法精确确定可接受的最大文件大小-似乎在1-3MB范围内波动。
我们排除的事物:
这不是网络服务器配置问题,因为我们正在运行
本地Django服务器(无Web服务器)
我们认为这不是应用服务器配置问题,因为这会在多个应用服务器(./manage.py runserver
和
daphne -p 8000 topknott.asgi:application
)
Django模型上的字段不是问题,看起来
正常:photo = models.ImageField(blank=True)
任何人都可以发现我们所缺少的吗?
答案 0 :(得分:1)
如果您的团队正在/正在使用Django Channels,则2.1.7
中引入了一段代码,导致意外的413错误(讨论了here)。但是,此问题已在2.3.0
中修复。
答案 1 :(得分:0)
据我所知,runserver或daphne永远不会返回413。看起来您在python服务器前面有NGINX。
您可以在nginx.conf的服务器块中使用client_max_body_size更改限制
server {
client_max_body_size 20M;
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
答案 2 :(得分:0)
Django具有内置机制,可防止任何可疑活动。
在您的settings.py文件中设置变量
DATA_UPLOAD_MAX_MEMORY_SIZE = 10*1024*1024 # your size limit in bytes
请参阅文档:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DATA_UPLOAD_MAX_MEMORY_SIZE