1

私はmultipart/form-dataを受け入れ、リクエストを渡すようにapiゲートウェイを設定したWebアプリケーションを持っています。しかし、私がフォームの一部として画像をアップロードすると、アップロードされて破損した元のファイルよりも大きくなります。 AWS APIゲートウェイを経由せずに同じメソッドを実行すると、画像は正常にアップロードされます。私がここで紛失しているアイデアは何ですか?APIゲートウェイでのマルチパートパススルー

下のフラスコ内のフォームデータを読み込み、自分のS3コードです:

f = request.files['attachment'] 
    fp = StringIO(f.read()) 
    file_uuid = str(uuid.uuid4()) 
    bucketkey.key = "att_%s%s" % (file_uuid, file_extension(f.filename)) 
    bucketkey.set_contents_from_file(fp) 

私は全くその便利な場合は破損しているサンプルJPGへのリンクを添付します。

https://s3.eu-central-1.amazonaws.com/agendacommunities/att_ef7375b1-bb19-4df9-9162-5582ed66797c.jpeg

+0

おそらく、Base64でエンコードされている可能性があります。 Base64でデコードしてみましたか? –

+0

残念ながら、ファイル自体やファイルの内容をデコードできません。フォーム内の他のフィールドは正しく解釈されますが、正しく通過します。私は全身がb64エンコードされていると思っていただろうが、ネイン。しかし、入力のおかげで! – Alex

+0

「破損した」画像をダウンロードし、16進エディタでファイルの内容を確認しようとしましたか?アップロードしたものを調べると、ファイルが大きくなり、自明でなければならない1つの方法があります。 –

答えて

1

たStringIOであなたの目的は何ですか? f.read()は文字列ではなくバイトを与えます。私はあなたがfをset_contents_from_fileに直接渡すことができ、それがfから読み込むと思います。

0

APIゲートウェイによってバイナリとして認識されるデータのコンテンツタイプヘッダーを設定する必要があります。

関連する問題