[解決済み] データベースに保存された画像を返すFlask
2023-03-24 04:06:13
質問
MongoDBに画像を保存していて、それをクライアントに返したいのですが、以下のようなコードになっています。
@app.route("/images/<int:pid>.jpg")
def getImage(pid):
# get image binary from MongoDB, which is bson.Binary type
return image_binary
しかし、Flaskではバイナリを直接返せないようです?今のところ私の考えです。
-
を返す。
base64
の画像バイナリを返します。問題はIE<8が対応していないことです。 -
一時ファイルを作成し、それを
send_file
.
もっと良い解決策はないのでしょうか?
どのように解決するのですか?
データを含むレスポンスオブジェクトを作成し、content typeヘッダを設定します。コンテントタイプヘッダーを
attachment
を設定します。
@app.route('/images/<int:pid>.jpg')
def get_image(pid):
image_binary = read_image(pid)
response = make_response(image_binary)
response.headers.set('Content-Type', 'image/jpeg')
response.headers.set(
'Content-Disposition', 'attachment', filename='%s.jpg' % pid)
return response
関連する werkzeug.Headers と flask.レスポンス
にファイルのようなオブジェクトを渡して、ヘッダ引数を
send_file
に渡して、完全な応答をセットアップさせることができます。使用方法
io.BytesIO
を使ってください。
return send_file(
io.BytesIO(image_binary),
mimetype='image/jpeg',
as_attachment=True,
attachment_filename='%s.jpg' % pid)
関連
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Flaskのリクエストで受信したデータを取得する
-
[解決済み] Flaskで静的ファイルを提供する方法
-
[解決済み] FlaskのビューからJSONレスポンスを返す
-
[解決済み] Flaskの開発サーバーをネットワーク上で見えるように設定する
-
[解決済み] Flaskのルートでクエリ文字列にアクセスする方法は?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] (HTML) クリックするとブラウザで開かず、PDFファイルをダウンロードする。
-
[解決済み] flaskのレスポンスで画像を返すには?[重複している]。
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] if 節の終了方法
-
[解決済み] Django filter queryset __in for *every* item in list