iT邦幫忙

0

伸縮自如的Flask [day14] 檔案下載 及 其他傳值方法

從官網的攻略介紹來看,因為安全考量,所以平常都應該使用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。
執行到達根路由,可以發現瀏覽器已經下載了檔案。

  • as_attachment:這個參數是控制讓瀏覽器進行下載還是將內容呈現在網頁。

url 傳值

我們可以由路由路徑來接收參數:

@app.route('/download/<filename>')
def send_html(filename):

也可以將接收參數直接設定型態:

@app.route('/download/<int:number>')
def hello(number):

可以支援的型態有:

  • str
  • int
  • float
  • path

query 傳值

一般我們可能看到的網址可能長成這樣:

https://www.youtube.com/watch?v=m2z8Caoww44

這個網址就用query來傳了參數v為m2z8Caoww44。

而從Flask來獲取參數的方法:

request.args.get('v')


尚未有邦友留言

立即登入留言