Help us understand the problem. What is going on with this article?

Djangoで大きいファイルを転送するために

More than 1 year has passed since last update.

前提条件

色々と端折っている部分はありますが, 要するに画像をアップロードしてImageFieldを通してDB, サーバのディレクトリに保存したいと解釈してください
おそらく画像以外にも言えることなので, ファイルという一括りで話しています

urls.py
...
urlpatterns = [
    ...
    path('test/', views.TestView.as_view(), name='test')
]
models.py
...
class Testmodel(models.Model):
    image = models.ImageField(upload_to='tmp')
views.py
...
class TestView(TemplateView):
    def post(self, request, *args, **kwargs):
        img = request.FILES['test']
        test = TestModel()
        test.image = img
test.html
<form action="{% url 'test' %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="test">
    <input type="submit">
</form>

問題

普通に運用する場合はこれで問題ないのですが, 一定以上の大きさのファイルを上げようとすると, 以下のようなエラーが出ました
スクリーンショット 2018-05-30 18.41.03.png
最初はpathの設定や拡張子の問題かと思っていたのですが, 画像サイズが問題でした.
先人たちの解決を調べた結果MAX_UPLOAD_SIZEをいじればいいと出たのですが, それもうまくいかず

解決

MAX_UPLOAD_SIZEではなく, FILE_UPLOAD_MAX_MEMORY_SIZEをいじることで解決しました
これはファイルサイズの上限を決めているもので, デフォルトは2621440(=2.5MB)になっています(これでも十分大きいですが)
ですので, 2.5MB以上のファイルを送信する場合はこれ以上の値を設定しなければいけません

setting.py
FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880

このような形でsetting.py内に設定すれば問題なく動くはずです
値はバイト数なので, 任意のサイズを細かく指定できるかと思います

結論

setting.py内でFILE_UPLOAD_MAX_MEMORY_SIZEを定義し直す

追記

当然といえば当然ですがちゃんと書いてありました.
でもエラーコードからここにたどり着くのは結構難しいです...
公式ドキュメント

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away