python oss The body of your POST request is not well-formed multipart/form-data

概述:python3 oss form-data上傳文件時請求返回:


OK
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>MalformedPOSTRequest</Code>
  <Message>The body of your POST request is not well-formed multipart/form-data</Message>
  <RequestId>5EF6262E77491D3933D0EBE5</RequestId>
  <HostId>115test.oss-cn-shenzhen.aliyuncs.com</HostId>
</Error>

原因:表單域格式不符合要求(直接在文本里使用l了空白行);

修改:

  1. 表單域內空白行使用\r\n\r\n,換行使用\r\n ,
  2. 表單域文本過長換行使用\
boundary = '----WebKitFormBoundary' + (uuid.uuid4().hex)[-16:]

data_upload = '''--{boundary}\r\nContent-Disposition: form-data; name="name"\r\n\r\n{filename}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="key"\r\n\r\n{key}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="policy"\r\n\r\n{policy}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="OSSAccessKeyId"\r\n\r\n{OSSAccessKeyId}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="success_action_status"\r\n\r\n200\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="callback"\r\n\r\n{callback}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="signature"\r\n\r\n{signature}\r\n--{boundary}\r\n\
Content-Disposition: form-data; name="file"; filename="{filename}"\r\n\
Content-Type: text/plain\r\n\r\n{filecontent}\r\n--{boundary}--'''.format(boundary=boundary, filename=self.file_name, key=self.g['object'],
                                                       policy=self.g['policy'], OSSAccessKeyId=self.g['accessid'],
                                                       callback=self.g['callback'], signature=self.g['signature'],
                                                       filecontent='filecontent_' + self.file_name)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章