在Flask中,处理文件上传涉及到使用表单(Form)来允许用户选择文件,并在服务器端接收和处理上传的文件。下面是一个简单的例子,演示如何在Flask中处理文件上传:
- 创建Flask应用:
# app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return 'No file part'
file = request.files['file']
if file.filename == '':
return 'No selected file'
# 保存文件到服务器
file.save('uploads/' + file.filename)
return 'File uploaded successfully'
- 创建HTML模板:
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<h1>File Upload Example</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" accept=".txt, .pdf, .png, .jpg, .jpeg">
<input type="submit" value="Upload">
</form>
</body>
</html>
在这个例子中,我们创建了一个包含一个文件上传表单的HTML页面。表单的enctype
属性设置为multipart/form-data
,这是处理文件上传的标准方式。
- 运行应用:
$ mkdir uploads # 创建用于存储上传文件的目录
$ export FLASK_APP=app.py
$ flask run
- 访问应用:
打开浏览器并访问 http://127.0.0.1:5000/,你将看到一个简单的页面,其中包含一个文件上传表单。选择一个文件并点击"Upload"按钮,文件将被上传到服务器的`uploads`目录中。
请注意,上述示例中的上传路径是相对于当前工作目录的,你可以根据需要调整保存文件的路径。此外,为了安全起见,你可能需要对上传的文件进行一些验证和处理,例如检查文件类型、大小、重命名文件等。在生产环境中,还应该考虑对上传的文件进行安全性检查。