13

使用 python flask_restplus发布和获取获取和推送文件(例如 xlsx)到服务器的正确方法是什么?

是否需要为此使用编组?

参考:https ://philsturgeon.uk/api/2016/01/04/http-rest-api-file-uploads/

此答案提供一般信息,但不在 python>flask>restplus 上下文中:REST API File Upload

4

1 回答 1

16

首先你需要配置一个解析器

# parsers.py
import werkzeug
from flask_restplus import reqparse

file_upload = reqparse.RequestParser()
file_upload.add_argument('xls_file',  
                         type=werkzeug.datastructures.FileStorage, 
                         location='files', 
                         required=True, 
                         help='XLS file')

然后将新资源添加到您的 api 命名空间

# api.py
import …
import parsers

@api.route('/upload/')
class my_file_upload(Resource):
    @api.expect(parsers.file_upload)
    def post(self):
        args = parsers.file_upload.parse_args()
        if args['xls_file'].mimetype == 'application/xls':
            destination = os.path.join(current_app.config.get('DATA_FOLDER'), 'medias/')
            if not os.path.exists(destination):
                os.makedirs(destination)
            xls_file = '%s%s' % (destination, 'custom_file_name.xls')
            args['xls_file'].save(xls_file)
        else:
            abort(404)
        return {'status': 'Done'}

我希望这有帮助。

于 2016-11-11T12:31:10.870 回答