Python-Eve 服务图像
Python-Eve serve images
美好的一天!我有一个基于 Python-Eve 框架的 REST API。我需要提供图像,例如简单的 Flask 应用程序(原因是不需要 运行 两台服务器)。我将 REST API 移动到 'api' 前缀并为服务静态文件制作简单的函数:
from flask import send_from_directory
import eve
app = eve.Eve()
@app.route('/images/<path:path>')
def serve_static(path):
return send_from_directory('images', path)
if __name__ == '__main__':
app.run()
但是它不起作用并给我 404 错误。当我用更简单的东西替换 send_from_directory 时,比如 return "Hello"
它工作正常。知道如何正确实施吗?提前致谢。
因为flask没有'image'文件夹在哪里,你应该明确指定。例如来自配置。
官方文档:send_from_directory
官方示例:
@app.route('/uploads/<path:filename>')
def download_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'],
filename, as_attachment=True)
我用 flask 包中的 send_file
函数解决了这个问题。
这是我的代码:
import os
from flask import send_file, abort, request
import eve
from settings import BASE_DIR
app = eve.Eve()
@app.route('/images')
def serve_images():
if request.args.get('path'):
path = os.path.join(BASE_DIR, 'app', 'images', request.args.get('path'))
else:
abort(403)
return send_file(path)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
这个方法对我很有用,因为我可以发送文件,这些文件留在 flask 应用程序的文件夹之外。
美好的一天!我有一个基于 Python-Eve 框架的 REST API。我需要提供图像,例如简单的 Flask 应用程序(原因是不需要 运行 两台服务器)。我将 REST API 移动到 'api' 前缀并为服务静态文件制作简单的函数:
from flask import send_from_directory
import eve
app = eve.Eve()
@app.route('/images/<path:path>')
def serve_static(path):
return send_from_directory('images', path)
if __name__ == '__main__':
app.run()
但是它不起作用并给我 404 错误。当我用更简单的东西替换 send_from_directory 时,比如 return "Hello"
它工作正常。知道如何正确实施吗?提前致谢。
因为flask没有'image'文件夹在哪里,你应该明确指定。例如来自配置。
官方文档:send_from_directory
官方示例:
@app.route('/uploads/<path:filename>')
def download_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'],
filename, as_attachment=True)
我用 flask 包中的 send_file
函数解决了这个问题。
这是我的代码:
import os
from flask import send_file, abort, request
import eve
from settings import BASE_DIR
app = eve.Eve()
@app.route('/images')
def serve_images():
if request.args.get('path'):
path = os.path.join(BASE_DIR, 'app', 'images', request.args.get('path'))
else:
abort(403)
return send_file(path)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
这个方法对我很有用,因为我可以发送文件,这些文件留在 flask 应用程序的文件夹之外。