2015-10-29 177 views
1

美好的一天!我有一個基於Python-Eve框架的REST API。我需要提供圖像,比如簡單的Flask應用程序(原因是不需要運行兩臺服務器)。我移動REST API爲「API」前綴,使簡單的功能,用於提供靜態文件:Python-Eve發送圖片

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"它工作正常。任何想法如何正確實施它?提前致謝。

回答

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) 

這種形式給出了對我來說是非常有用的,因爲我可以發送文件,這使得瓶的應用程序的文件夾之外。

0

由於燒瓶不在哪裏是'圖像'文件夾,你應該清楚地指定它。例如從配置。

官方DOC:send_from_directory

官方例如:

@app.route('/uploads/<path:filename>') 
def download_file(filename): 
    return send_from_directory(app.config['UPLOAD_FOLDER'], 
           filename, as_attachment=True)