ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

GAEでファイルをアップロードするとき、セッションなんてなかった

結局URLを作るときに、パラメータを渡すことで逃げることにしました。
ファイルのアップロードは他とは違うという事情があるから仕方ないのは仕方ないのですが、セッションが使えないのはすごくつらいところがあります。
仕方ないので、今ログインしているユーザーの情報を特定できるキーを含めたURLを作ることで対処しました。

# ファイルをアップロードして、BlobStoreに保存するハンドラー
class UploadHandlerblobstore_handlers.BlobstoreUploadHandler):
  def post(self, userkey):
    upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
    user = User.get_by_id(int(userkey))
    # あとはよしなにやる

#ファイルをアップロードするフォームを表示するハンドラー
class FileUploadHandler(BaseRequestHandler):
  def get(self):
    upload_url = blobstore.create_upload_url('/upload/%d' % self.current_user.key.id())
    self.render('update_form.html', {'update_url': upload_url})

セキュリティ的に大丈夫なのか怪しいのですが、リダイレクトされるURLはIDとは違うハッシュのような何かになっているので、大丈夫なのかな…