flask_restful 多文件接收接口 2种实现方法
时间: 2024-05-07 09:23:49 浏览: 8
方法一:使用 Flask-Uploads 扩展
Flask-Uploads 是一个 Flask 扩展,它简化了文件上传的处理过程。通过这个扩展,我们可以轻松地实现文件上传和下载功能。下面是一个使用 Flask-Uploads 实现多文件上传的示例代码:
```python
from flask import Flask, request
from flask_uploads import UploadSet, configure_uploads, ALL
app = Flask(__name__)
# 定义上传文件规则
files = UploadSet('files', ALL)
# 配置 Flask-Uploads
app.config['UPLOADED_FILES_DEST'] = 'uploads'
configure_uploads(app, files)
@app.route('/upload', methods=['POST'])
def upload():
# 获取上传的文件
uploaded_files = request.files.getlist('file')
filenames = []
for file in uploaded_files:
filename = files.save(file)
filenames.append(filename)
return {'filenames': filenames}
if __name__ == '__main__':
app.run(debug=True)
```
在上面的代码中,我们首先定义了一个上传文件规则,然后配置了 Flask-Uploads 扩展。在上传文件时,我们通过 `request.files.getlist('file')` 获取上传的文件列表,然后逐个保存文件并记录文件名。
方法二:使用 Flask-Restful 扩展
Flask-Restful 是一个 Flask 扩展,它提供了一种简单的方式来创建 RESTful API。通过这个扩展,我们可以轻松地实现多文件上传功能。下面是一个使用 Flask-Restful 实现多文件上传的示例代码:
```python
from flask import Flask, request
from flask_restful import Api, Resource
import os
app = Flask(__name__)
api = Api(app)
class Upload(Resource):
def post(self):
# 获取上传的文件
uploaded_files = request.files.getlist('file')
filenames = []
for file in uploaded_files:
# 保存文件
filename = file.filename
file.save(os.path.join('uploads', filename))
filenames.append(filename)
return {'filenames': filenames}
api.add_resource(Upload, '/upload')
if __name__ == '__main__':
app.run(debug=True)
```
在上面的代码中,我们定义了一个名为 Upload 的资源,然后实现了一个 post 方法来处理文件上传。在上传文件时,我们通过 `request.files.getlist('file')` 获取上传的文件列表,然后逐个保存文件并记录文件名。最后返回文件名列表。