Google App EngineでDjangoを使っていると以下のエラーが出た。
Only tempfile.TemporaryFile is available for use
画像をアップロードする時に出たんだけど、何のことかよくわからなかった。
検索しても日本語情報がほとんど出てこなかったので、仕方なしに頑張って英語のサイトを読んだ。
分かったことは、おそらく画像のサイズがオーバーしているということ。
settings.pyに以下の2行を追加するとうまく行った。
FILE_UPLOAD_HANDLERS = ('django.core.files.uploadhandler.MemoryFileUploadHandler',)
FILE_UPLOAD_MAX_MEMORY_SIZE = 3145728 # 3MBまでOK
Google App Engineは料金体系も変わったし、データストアとかいろいろめんどくさい事が多いけど、無視できない存在なので、少しは関わっていかないといけないと思う。
最近、独自ドメインでSSL通信に対応したことも、かなり大きな魅力だと思う。
Google App Engineを極めると、何か仕事を受注できるかもしれないし。
Google App EngineでDjangoを使っていて、画像をアップロードする機能を付けている人は、必ず上記の2行を追加しておきましょう。
僕も、自分で何度もテストしている時は気付かなかったんだけど、別の人にやってもらって気付きました。
ちなみに、iPhoneで撮影した画像は2.7MBとかあることが多いので、3MBの設定にしてみました。
最初は、2.5MBまでにしてたけど、iPhoneで撮影した画像の中に時々エラーが出るのがあったので、3MBが無難かと。
アップロードした後、小さくリサイズして保存して、容量を節約することも大事。