Flask中使用Flask-WTF的FileField()实现文件上传和重命名功能
发布时间:2024-01-17 12:07:57
在Flask中使用Flask-WTF的FileField()实现文件上传和重命名功能非常简单。首先,我们需要安装Flask-WTF库,可以使用pip命令进行安装:
pip install flask-wtf
接下来,在Flask应用程序中引入相关模块和类:
from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import FileField from werkzeug.utils import secure_filename
然后,创建一个FlaskForm的子类,并添加一个FileField字段用于文件上传:
class UploadForm(FlaskForm):
file = FileField()
接着,我们需要在Flask应用程序中配置一些必要的参数,以便支持文件上传和保存:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['UPLOAD_FOLDER'] = '/path/to/save/uploads'
app.config['ALLOWED_EXTENSIONS'] = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
在上述配置中,我们需要提供一个密钥来保护表单数据(SECRET_KEY),一个上传文件夹路径(UPLOAD_FOLDER),以及允许上传的文件类型(ALLOWED_EXTENSIONS)。
接下来,我们需要编写一个视图函数来处理文件上传和重命名的逻辑:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
form = UploadForm()
if request.method == 'POST':
file = form.file.data
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return 'File uploaded successfully!'
return render_template('upload.html', form=form)
在上述代码中,我们首先创建一个UploadForm实例,然后判断请求的方法是否为POST。如果是POST请求,我们首先获取上传的文件对象,然后调用allowed_file()函数来验证文件类型是否允许上传。如果验证通过,我们使用secure_filename()函数来对文件名进行安全处理,然后将文件保存到指定的上传文件夹中。
最后,我们可以在模板文件中添加一个简单的HTML表单,以实现文件上传的功能:
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<h1>File Upload</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.file.label }} {{ form.file }}
<br>
<input type="submit" value="Upload">
</form>
</body>
</html>
通过以上步骤,我们就可以在Flask中使用Flask-WTF的FileField()实现文件上传和重命名的功能了。请注意,在实际应用中,我们还需要加入更多的文件验证、错误处理和安全措施来保护应用的安全性。
