My team has been getting 413 errors whenever we try and upload large files to our Django back-end: 413 Payload too large
We can't exactly pin down the maximum acceptable file size - it seems to vacillate in the 1-3MB range.
Things we have excluded:
It's not a webserver configuration issue, because we're running the
Django server locally (without a webserver)
We believe it's not an app server configuration issue, because this happens on multiple app servers (./manage.py runserver
and
daphne -p 8000 topknott.asgi:application
)
It's not an issue with the field on the Django model, which looks
normal: photo = models.ImageField(blank=True)
Can anyone spot what we're missing?
your HTTPS server does not have client_max_body_size configured, so it is defaulting to 1M & causing this 413 (Request Entity Too Large) error. To fix this issue, you simply need to add client_max_body_size to BOTH the HTTP server block and the HTTPS server block, as shown in the example below: http { ...
What does “413 Request Entity Too Large” mean? A 413 HTTP error code occurs when the size of a client's request exceeds the server's file size limit. This typically happens when a client attempts to upload a large file to a web server, and the server responds with a 413 error to alert the client.
Django has a build in mechanism to prevent any suspicious activity.
In your settings.py file set the variable
DATA_UPLOAD_MAX_MEMORY_SIZE = 10*1024*1024 # your size limit in bytes
See documentation: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DATA_UPLOAD_MAX_MEMORY_SIZE
If your team was/is using Django Channels, there was a piece of code introduced in 2.1.7
causing an unintended 413 error (discussed here). This was fixed in 2.3.0
, however.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With