用于上载和下载文件的Python restplus API

用于上载和下载文件的Python restplus API,python,rest,upload,flask-restplus,Python,Rest,Upload,Flask Restplus,使用python,使用post和get方法获取文件(例如xlsx)并将其推送到服务器的正确方法是什么 是否需要为此使用此选项 参考: 这个答案提供了一般信息,但不是在python>flask>restplus上下文中:首先需要配置解析器 # parsers.py import werkzeug from flask_restplus import reqparse file_upload = reqparse.RequestParser() file_upload.add_argument('

使用python,使用post和get方法获取文件(例如xlsx)并将其推送到服务器的正确方法是什么

是否需要为此使用此选项

参考:


这个答案提供了一般信息,但不是在python>flask>restplus上下文中:

首先需要配置解析器

# 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'}

我希望这能有所帮助。

如果在一篇文章中有多个类型/事件的方法,我的观点就不能成功使用这种模块样式。发送方法(文件上传)是
post
,但我从未使用过这种方法,因为我需要检查文件内容以便在某处写入!在大文件上比较复杂,需要同步源和目标(不删除或移动,只做区分)。为了不丢失任何数据或转义多个io操作,需要在源代码/html输出上使用额外的修订。如果文件较小,请使用Base64编码的bz2内容。大文件(在您的服务器上)在创建/修改过程中有很多风险。要以restful的方式执行此操作,我认为您应该首先创建一个文件对象:
POST/api/v1/file{“meta”:“some data”}
然后您收到文件对象:
{“meta”:“some data”,“created_time”:“timestamp”,“id”:1}
,然后使用文件的二进制文件PUT添加附件,因此:
PUT/api/v1/file/1/attachment
PUT或POST(如果使用简单html)form@samurai我同意这通常是一条路要走。但是,这种方法的问题在于Flask RESTPlus不支持将二进制blob作为请求体直接传递(Swagger 2.0也不支持)。相反,我们必须求助于使用他在回答中建议的表单数据方法k3z——至少如果我们希望使用招摇来描述文件上传API(尤其是请求的预期
内容类型
)。