Flask-Smorest 接口返回多张图片 - 使用 send_from_directory 函数
使用 from flask_smorest import Blueprint,from flask.views import MethodView,写一个接口,将文件下多张图片都返回给前端展示出来,需不需要使用 from flask import send_from_directory, send_file 包来发送图片呢,代码实现内容:如果想要返回多张图片给前端展示,可以使用 send_from_directory 函数来发送图片。下面是一个基于 Flask-Smorest 和 Flask 的代码示例:
from flask import Flask, send_from_directory
from flask.views import MethodView
from flask_smorest import Blueprint
app = Flask(__name__)
# 创建一个蓝图
api_bp = Blueprint('api', __name__, url_prefix='/api')
# 设置静态文件夹的路径
UPLOAD_FOLDER = 'path_to_folder'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@api_bp.route('/images/<path:filename>')
def get_image(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
@app.route('/')
def index():
return "Hello, World!"
class ImageAPI(MethodView):
def get(self):
image_urls = ['image1.jpg', 'image2.jpg', 'image3.jpg']
return {'images': [api_bp.url_for('api.get_image', filename=url) for url in image_urls]}
api_bp.add_url_rule('/images', view_func=ImageAPI.as_view('images'))
app.register_blueprint(api_bp)
if __name__ == '__main__':
app.run(debug=True)
上述代码中,UPLOAD_FOLDER 变量指定了存储图片的文件夹路径。get_image 函数使用 send_from_directory 函数将图片发送给前端,其中 app.config['UPLOAD_FOLDER'] 指定了文件夹的路径。
ImageAPI 是一个继承自 MethodView 的类,用于处理获取图片列表的请求。get 方法返回一个包含图片 URL 的响应,其中 URL 通过 api_bp.url_for 函数生成。
在 api_bp 蓝图中,使用 add_url_rule 函数将 ImageAPI 视图类与 /images 路径关联起来。接着,通过 register_blueprint 函数将蓝图注册到应用中。
这样,当访问 /api/images 时,会返回一个包含所有图片 URL 的 JSON 响应,前端可以使用这些 URL 来加载和展示图片。
原文地址: https://www.cveoy.top/t/topic/p0TG 著作权归作者所有。请勿转载和采集!