2017-12-05 56 views
2

ユーザーがアップロードしたイメージを読み込み、イメージを表示しようとしています。私はアップロードされた画像ファイルを保存しないでこれをやりたいPython Flask "send_file()"メソッドTypeError

私はこのようなコードを持っている:それは、このエラーが発生し

from flask import Flask, redirect, render_template, request, url_for, send_file 
    from PIL import Image, ImageDraw 
    from io import BytesIO 

    app = Flask(__name__) 

     @app.route('/', methods=['GET', 'POST']) 
     def index(): 
      if request.method == 'POST':  
       img = Image.open(request.files['file'].stream) 
       byte_io = BytesIO() 
       img.save(byte_io, 'PNG') 
       byte_io.seek(0) 
       return send_file(byte_io, mimetype='image/png') 

を:

TypeError: send_file() got an unexpected keyword argument 'mimetype'

私は他の有効なパラメータでmimetypeを交換しようとしました、それはちょうど同じを与えます新しいパラメータの名前を使用します。だから私は問題が私のbytes_ioであると思う。

UPDATE:

明確にするために、send_file()によって私はflask.send_file()方法で構築を参照しています:だからflask document

The mimetype guessing requires a filename or an attachment_filename to be provided.

...

  • mimetype – the mimetype of the file if provided. If a file path is given, auto detection happens as fallback, otherwise an error will be raised.

から

+0

'' 'send_file()' ''にコードスニペットを追加できますか?ありがとうございました。私は 'attachment_filename'と' as_attachment'パラメータを追加しようとしましたが、エラーはそのままです。 –

答えて

2

、あなたはこの

のようなものを提供しなければなりません
return send_file(io.BytesIO(obj.logo.read()), 
       attachment_filename='logo.png', 
       mimetype='image/png') 

まだ同じエラーを持っている場合、私は私の答え、
ファーストを更新した、サンプルコードの下に正常に実行する必要があり、

from flask import Flask 
app = Flask(__name__) 

@app.route('/get_image') 
def get_image(): 
    if request.args.get('type') == '1': 
     filename = 'ok.gif' 
    else: 
     filename = 'error.gif' 
    return send_file(filename) 


if __name__ == '__main__': 
    app.run() 

は第二に、私はあなたの環境か」の問題だと思います。 Pythonパッケージのバージョンはpip freezeで確認できます。

+0

私も 'BytesIO(file.read())'を使う方法を試しましたが、それでも何も変わっていませんでした:/ –

+0

ところで、あなたのコードを私のMacで実行すると、 'attachment_filename'、' mimetype'を削除するのはどうですか?デフォルトで 'mimetype'を推測しようとしますので、plzはフラスコのバージョンをチェックします。 – hyun

+0

私はFlaskの最新バージョンを使用しています(0.12.0と思います)。私は 'import'ステートメントから' send_file'を取り出してみましたが、何とかエラーは同じですが、 'send_file not defined'タイプのエラーはありません。 –

関連する問題