Python-Eve提供图像

时间:2015-10-29 02:26:22

标签: python flask static-files eve

美好的一天!我有一个REST API,它基于Python-Eve框架。我需要提供图像,就像简单的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"它可以正常工作。知道如何正确实现它吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

由于烧瓶不在'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)

答案 1 :(得分:0)

我从烧瓶包中解决了这个问题wirh 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应用程序的文件夹之外。