python

しょっちゅう忘れることを書いておく。

66

1488 views

Flaskで画像をアップロードする方法

Flaskを使って画像をアップロードする簡単なサンプルコードを紹介します。画像をアップロードする際には、まずサーバー側でアップロードディレクトリを設定し、画像の保存先を決める必要があります。以下にそのサンプルコードを示します。

Code 1: Flaskで画像をアップロードするサンプルコード

import os
from flask import Flask, request, jsonify

app = Flask(__name__)

UPLOAD_FOLDER = './uploads'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# アップロードフォルダが存在しない場合、作成する
if not os.path.exists(UPLOAD_FOLDER):
    os.makedirs(UPLOAD_FOLDER)

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        if 'file' in request.files:
            file = request.files['file']
            if file and allowed_file(file.filename):
                filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
                file.save(filepath)
                return jsonify({"message": "File uploaded successfully", "filename": file.filename})
    return jsonify({"error": "No file uploaded"})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

説明:

  • UPLOAD_FOLDER: 画像を保存するフォルダのパスを設定します。
  • allowed_file: アップロード可能なファイルの拡張子をチェックします。ALLOWED_EXTENSIONSに定義された拡張子(png, jpg, jpegなど)のみを許可します。
  • file.save(filepath): アップロードされたファイルを指定されたパスに保存します。

画像をサーバーに送信するには、curl コマンドを使うと便利です。以下にサンプルの curl コマンドを示します。

Code 2: curlコマンドで画像を送信するサンプル

curl -X POST -F "file=@/home/konishi/docker/gas/test/DSC_0017.JPG;type=image/jpg" http://192.168.1.86:5000/upload

説明:

  • -F "file=@path/to/file" で送信するファイルを指定します。@の後にファイルパスを書きます。
  • type=image/jpg でMIMEタイプを指定します(省略しても動作します)。
  • http://192.168.1.86:5000/upload はFlaskサーバーのアップロードエンドポイントです。IPアドレスやポートは自分の環境に合わせて変更してください。

これで、Flaskを使った画像アップロードの基本的な仕組みが実装できました。このサンプルを元に、機能を拡張することも可能です。

Page 13 of 69.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626