1

ファイル入力といくつかのテキストフィールドを含むフォームがあり、ファイルをblobstoreにアップロードしてから、残りの入力を処理したいと思います。私はグーグルからドキュメントを見つけました、しかし私はまだ詳細について曖昧です。私が正しい考えを持っている場合は、最初に次のようなフォームの送信URLを生成します。

 blobstore.create_upload_url('/handlerURL')

ここで、handlerURLは、テキストフィールドなどの通常のフォームデータを処理するリクエストハンドラのURLです。

次に、を定義しますBlobstoreUploadHandler。これがあいまいになります...ドキュメントからBlobstoreUploadHandler、ファイルのアップロードを処理し、書き換えられた要求をに渡すことがわかります\handlerURL。私の混乱は、ここのドキュメントにあるときに起こります:

https://developers.google.com/appengine/docs/python/tools/webapp/blobstorehandlers

データモデルオブジェクトのインスタンスは、BlobstoreUploadHandler

しかし、追加の処理を行い、リクエストハンドラーの他のフィールドのデータを使用したい場合は、handlerURLBlobstoreUploadHandlerになりますか、これは正しいですか、それともプロセスを誤解していますか?

4

2 に答える 2

2

BlobstoreUploadHandlerは、マルチパートメッセージのファイルアップロード部分をサニタイズするだけです。標準的な方法(例:self.request.get('some_field_in_the _form'))を使用して、フォームの残りのフィールドにアクセスできます。

于 2012-11-10T21:59:27.337 に答える
0

ここでは 2 つのハンドラーが関与しているため、これは確かに少し注意が必要です。

  • 最初のものは blobstore 自体からのものです。その URL は create_upload_url 呼び出しによって返されます。そのタスクは、ファイル (または複数のファイル) を保存し、それを blobkey に置き換えることです。次に、フォームをメイン ハンドラーにポストするだけです。
  • 2 つ目は、ユーザーが定義します。あなたの場合、その URL は /handlerURL です。ほとんどの場合、BlobstoreUploadHandler がここで使用されますが、必須ではありません。BlobstoreUploadHandler を使用すると、ブロブキーを簡単に取得できます。それだけです。それとは別に、これは単なる webapp.RequestHandler であるため、ここでフォーム全体を処理できます。
于 2012-11-28T21:10:43.420 に答える