使用from flask_smorest import Blueprintfrom flaskviews 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/iiJ3 著作权归作者所有。请勿转载和采集!