8

Google appengine の webapp2 には、アップロードされたファイルの処理に関する非常に不可解なドキュメントがあります

Uploaded files are available as cgi.FieldStorage (see the cgi module) instances directly in request.POST.

NDB.JsonProperty に保存したい JSON ファイルの POST リクエストを行うフォームがあります。

リクエストオブジェクトからファイルを読み取る方法の短い例を誰かが提供できますか?

4

3 に答える 3

9

フォームで使用enctype="multipart/form-data"し、ハンドラーで使用してファイル コンテンツを取得できます。

raw_file = self.request.get('field_name')

次に、モデルのプロパティへの入力として raw_file を渡します。

于 2012-11-28T09:53:33.903 に答える
5

Google の文書はひどいものです。webapp2 の request オブジェクトの実験に約 2 時間を費やし、最終的にこれを行う方法を見つけました。

https://stackoverflow.com/a/30969728/2310396を確認してください。

基本的なコード スニペットは次のとおりです。

class UploadHandler(BaseHandler):
    def post(self):
        attachments = self.request.POST.getall('attachments')

        _attachments = [{'content': f.file.read(),
                         'filename': f.filename} for f in attachments]

self.request.POST.getall('attachments')の代わりにを使用します。同じ名前の HTML フォームself.request.POST.get('attachments')の複数のフィールドである可能性があるためです。inputself.request.POST.get('attachments')

于 2015-06-21T22:07:06.547 に答える
0

cgi.FieldStorage はファイルをどのように保存しますか?で説明されているソリューションを使用する代わりに 、フォームで enctype="multipart/form-data" を使用し、

投稿のハンドラーメソッドで、次の方法でファイルにアクセスしました。

file_content = self.request.POST.multi['myfieldname'].file.read()

出来た!

于 2012-11-27T17:24:30.423 に答える