环境
- windows 10 64bit
- anaconda3 with python 3.7
- flask 1.1.2
前言
web
后端接收多文件,在实际项目中也算是个常见的需求,本文就来看看,在 flask
中如何来实现这个需求。
实例
先来看后端代码,少量注释写在了代码中
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def index():
# 使用request模块接收带对应标签的文件列表,这里对应图片和视频
image_files = request.files.getlist('image')
video_files = request.files.getlist('video')
# 判断是否有空文件
if not image_files and not video_files:
return jsonify({
"code": -1,
"message": "No upload images or videos."
})
# 从文件列表依次取出并保存,文件名与上传时一致
for image_file in image_files:
image_file.save(image_file.filename)
# 同上
for video_file in video_files:
video_file.save(video_file.filename)
return jsonify({
"code": 0,
"message": "upload images and videos success."
})
if __name__ == '__main__':
# 启动flask app
app.run('0.0.0.0', debug=True, port=5000)
示例代码就这么简单,写完后,保存,启动服务
python app.py
客户端部分,这里使用 postman
这个工具来进行模拟请求,打开 postman
,新建一个请求,在 Body
里面携带参数,选择 form-data
。
鼠标点击 key
值尾部,出现 Text
和 File
两种类型,这里我们选择 File
,这里我们需要2个 key
值,分别是 image
和 video
,这2个值在 flask
中会用到,2者匹配起来就可以了,你想写其它的字符都可以
准备就绪后,就可以点击发送了,成功后,在响应部分,可以看到返回值 json
数据
同时,在 flask
后端,也成功接收并保存了对应的图片文件和视频文件,文件名与上传时的文件名保持一致
源码下载
https://github.com/xugaoxiang/FlaskTutorial
Flask系列教程
更多 Flask
教程,请移步