【问题标题】:Python-Eve serve imagesPython-Eve 提供图像
【发布时间】:2015-10-29 02:26:21
【问题描述】:

美好的一天!我有一个基于 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",它可以正常工作。知道如何正确实施吗?提前致谢。

【问题讨论】:

    标签: python flask static-files eve


    【解决方案1】:

    因为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)
    

    【讨论】:

      【解决方案2】:

      我通过烧瓶包中的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)
      

      这种方法对我来说非常有用,因为我可以发送文件,这些文件留在烧瓶应用程序的文件夹之外。

      【讨论】:

        猜你喜欢
        • 2016-01-06
        • 2015-03-04
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多