项目需要使用 flask 上传、下载文件到 google storage 上,
搜了一圈没有能直接结合 wtform 使用的插件,所以动手造了个轮子。
只实现了基本的上传,下载的功能,后续可能会完善预览、权限控制等功能。
安装和使用方法参见 README –> https://github.com/FingerLiu/…
flask-wtf-storage
extend flask-wtf to support saving data to google storage
Installation
pip install flask-wtf-storage
Usage
1 首先引入我们需要的头文件
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from flask_wtf_storage import (
MultipleFileField, FileField, FileDisplayField, StorageForm
)
2 然后在 form 中定义上传文件要使用的 form 及字段
class RegistrationForm(StorageForm):
website = StringField('website')
single_file_example = FileField()
multi_files_example = MultipleFileField()
submit = SubmitField('OK')
这里,为了演示,我们使用了 FileField 和 MultipleFileField 两种类型的字段。
FileField 用来实现只能上传一个文件的 Input 框, MultipleFileField 用来实现能够选择多个文件的 Input 框。
3 然后在 view 中使用该 form 并传递给 template
@current_app.route(‘/register/’, methods=[‘GET’, ‘POST’])
def register():
form = RegistrationForm()
if form.validate_on_submit():
# 存到 datastore
data = form.data
data.pop('csrf_token')
data.pop('password2')
login(data)
return redirect(url_for('profile.html'))
return render_template('register.html', form=form)
4 最后像使用普通的 wtform 一样在 template 中 render form 即可。