GAE で Error: Request Entity Too Large のエラー

以下のエラーが出た。

Error: Request Entity Too Large
Your client issued a request that was too large.

これは GEA に送信するデータが制限を超えている場合に出る。
自分は 45MB くらいのファイルを form から POST したら発生。
このファイルをGCSに保存したかったんだけど・・・。

で、解決策は以下。
http://qiita.com/tomorier/items/7ee5222137651efddb33

簡単に説明すると・・・

form から直接 GCS に直接 POST できる特殊なURLを生成して、
それを form にセットする。
で、formから直接ファイルを POST する。


特殊なURLを生成する際に、
ファイルのアップロード完了通知を受け取るエンドポイントを指定できるので、
ファイルのアップロード完了のタイミングは知ることができる。
つまり、非同期になるんだね。


特殊なURLを生成する際に、
ファイルのアップロード完了通知を受け取るエンドポイントを指定できる。
アップロードが完了したら、このエンドポイントにリダイレクトされる。
非同期じゃありませんでした。
ちなみに、このエンドポイントはPOSTを受けるようにしておく必要がある。
GETにすると404でリダイレクトされない。

直接 form に POST するから、
アップロード前にサーバ側で送信するデータとかファイルに対してのバリデーションはかけれないっぽい。

クライアント側(JS, ネイティブアプリ)でやってもらうか、
アップロード完了通知を受け取ってから、
GCSのファイルを読み取って、
ファイルのサイズとかチェックする感じになるっぽい・・・。