從官網的攻略介紹來看,因為安全考量,所以平常都應該使用send_from_directory(),而不是send_file()。
下面可以看一下程式碼app.py:
from flask import Flask,render_template,jsonify,send_from_directory
app = Flask(__name__)
@app.route('/')
def index():
filename='hello.txt'
return send_from_directory('data', filename, as_attachment=True)
if __name__ == "__main__":
app.run(debug=True,threaded=True,port=5566)
在app.py旁邊創立資料夾data,以及在data資料夾裡面放入hello.txt。
執行到達根路由,可以發現瀏覽器已經下載了檔案。
我們可以由路由路徑來接收參數:
@app.route('/download/<filename>')
def send_html(filename):
也可以將接收參數直接設定型態:
@app.route('/download/<int:number>')
def hello(number):
可以支援的型態有:
一般我們可能看到的網址可能長成這樣:
https://www.youtube.com/watch?v=m2z8Caoww44
這個網址就用query來傳了參數v為m2z8Caoww44。
而從Flask來獲取參數的方法:
request.args.get('v')