flask
flask_ext
python
uploads
官方文件:
Flask-Uploads
應用於檔案上傳,除了可以直接結合Flask-wtf
使用之外,還可以限制上傳檔案格式,相信這對初級的檔案上傳應用已經足夠了,使用時要注意到Html文件的設置enctype=multipart/form-data
以及<input type=file name=photo>
,透過範例來瞭解吧。
Flask_Uploads
的參數設置不多,只提列兩個說明,其餘四個視需求調整即可。
static
內設置一個資料夾放置注意到上面的『FILES』會依你設置Upload Sets改變
實作的時候可依需求選擇上傳文件類型,像IMAGE(.jpg, .jpe, .jpeg, .png, .gif, .svg, and .bmp)
、TEXT(.txt)
或是DOCUMENTS(.rtf, .odf, .ods, .gnumeric, .abw, .doc, .docx, .xls, and .xlsx)
,可以全開放再利用AllExcept
來設置例外禁止清單。
實作的時候透過UploadSet
設置上傳對象,再利用configure_uploads
來初始化設置,如同其它擴展的init_app
,單檔大小限制也可以再使用patch_request_class
參數配置。
上面的說明非常的抽象,最好的理解方式就是自己動手做它一回,一回生二回熟,錯個幾次就會懂。這個案例是一個取得檔案名稱與檔案連結的說明,為了可以對參數設置有一個較直觀的理解,也故意將參數設置的比較怪異些,請不要介意。
第8、9行:flask_uploads參數設置,注意到,中間是『DEF』,這來自於實作UploadSet
的參數name='def'
第11行:實作UploadSet
第12行:初始化flask_uploads
,這邊是以UploadSet
跟app
做參數,故第二個參數為abc
。
第14行:簡單的設置一個Html
第18行:注意到form設置enctype=multipart/form-data
第19行:設置type=file name=in_abc
第28行:判斷該type=file
物件是否存在request.files
第29行:利用save
取得檔案名稱
第31行:利用url
取得連結路徑(依參數設置)
檔案名稱會出現_5是因為我上傳了6次(如上圖),當使用者試著上傳非允許格式的時候會拋出異常(如下圖)
這是一個非常簡單的單檔上傳的案例說明,實作起來不難,只需要注意到該設置的部份正確了就可以了,下一節預計將flask-uploads
搭配flask-wtf
一起使用,最後再結合到我們的專案上面去。
Flask_Uploads_搭配Flask-wtf:Flask實作_ext_15_Flask_Uploads_搭配Flask-wtf