Python使用Flask框架同时上传多个文件的方法需要以下步骤:
1. 创建HTML表单
HTML表单需要添加enctype属性,值是multipart/form-data,表示表单数据同时包含文本和二进制数据(文件)。表单中使用input标签的type属性为file的元素来让用户选择需要上传的文件,如下所示:
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file1" multiple>
<input type="file" name="file2" multiple>
<button type="submit">上传</button>
</form>
其中,name属性代表表单数据的传输名(键),multiple属性表示支持上传多个文件。
2. 在Flask应用程序中创建路由
使用Flask框架需要导入Flask库,并实例化一个Flask应用程序对象:
from flask import Flask, request
app = Flask(__name__)
在Flask应用程序中创建路由:
@app.route('/upload', methods=['POST'])
def upload():
file1 = request.files.getlist('file1')
file2 = request.files.getlist('file2')
其中,@app.route('/upload', methods=['POST'])装饰器定义了路由规则和HTTP请求方法(POST),upload()是视图函数的名字。
使用request.files.getlist()方法根据表单中的name属性获取上传的文件,如获取name为file1和name为file2的文件。
3. 处理上传的文件
对于每个上传的文件,可以使用save()方法将其保存到本地磁盘,例如:
for f in file1:
f.save('path/to/save/file1')
for f in file2:
f.save('path/to/save/file2')
其中,f是一个FileStorage对象,使用save()方法将其保存到本地磁盘的指定路径。
示例1:使用Flask框架上传多个文件并保存到本地磁盘
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
file1 = request.files.getlist('file1')
file2 = request.files.getlist('file2')
for f in file1:
f.save('path/to/save/file1')
for f in file2:
f.save('path/to/save/file2')
return '上传成功'
在浏览器打开表单页面,选择需要上传的文件,点击上传按钮,Flask框架会把上传的文件保存到本地磁盘。
示例2:使用Flask框架上传多个文件并返回文件名列表
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
file1 = request.files.getlist('file1')
file2 = request.files.getlist('file2')
filenames = []
for f in file1:
f.save('path/to/save/file1')
filenames.append(f.filename)
for f in file2:
f.save('path/to/save/file2')
filenames.append(f.filename)
return jsonify(filenames)
通过添加jsonify()方法,将文件名列表以JSON格式返回。这个信息可以被客户端JavaScript代码获取,并进一步处理。
注:路径的具体配置需按实际情况进行调整。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用Flask框架同时上传多个文件的方法 - Python技术站