如何使用Flask-restplus从PUT请求获取表单数据

时间:2018-05-04 15:13:48

标签: rest flask multipartform-data put

我的API的一个端点使用multipart / form-data处理PUT请求。在上传音频文件时,会从表单数据中的客户端发送一些其他数据。我可以使用以下代码接收文件,但无法获取表单数据。

@api.route('/upload')
class AudioUpload(Resource):
    def put(self):
        now = datetime.now()
        filename = now.strftime("%Y%m%d_%H%M%S") + ".mp3"
        cwd = os.getcwd()
        filepath = os.path.join(cwd, filename)
        name = request.form['name']
        print('name: ', name, file=sys.stdout)
        with open(filepath, 'wb') as f:
            f.write(request.stream.read())
        return filepath

我测试过的curl命令是:

curl -X PUT \
  http://localhost:5000/api/upload \
  -H 'content-type: multipart/form-data \
  -F file=@Audio-3791_244-Feb_04_2018-13_30_04.wav \
  -F name=xyz

我收到400错误The browser (or proxy) sent a request that this server could not understand.

在PUT请求中获取表单数据的正确方法是什么?

修改

刚用帖子试过相同的代码。它不能用于获取具有相同错误的表单数据。

0 个答案:

没有答案