使用表单数据体上传文件

时间:2017-11-29 08:43:32

标签: python python-requests

我需要使用API​​来上传PNG文件:

  

请求正文接受multipart / form-data,其密钥为uploadedFile。

使用Chrome postman插件,我可以使用API​​上传文件,这就是我所做的:

Header: none
Body
  type: form-data
  key: uploadedFile
  Value: <file-location>
POST

这是我编写的Python代码:

login = requests.post(login_url, <other options>)
# above login is successful

upload_url = "Some_Value"
file_path = '/root/sample.png'
file = {'file': ('pngfile', open(file_path, 'rb'), 'image/png')}

body  = { 'uploadedFile':  file_path}

post_file = requests.post(upload_url, files=file, data=body,  cookies=login.cookies, verify=False)

我收到以下错误:

Bad Request[ errorCode:-18 ,message:Unsupported image file format. Please upload an image in GIF, JPEG or PNG format.]

1 个答案:

答案 0 :(得分:1)

您需要以uploadedFile名称上传文件。不要将该名称与路径一起使用,将文件本身命名为

upload_url = "Some_Value"
file_path = '/root/sample.png'
file = {'uploadedFile': ('pngfile', open(file_path, 'rb'), 'image/png')}

post_file = requests.post(upload_url, files=file, cookies=login.cookies, verify=False)

POSTMan做同样的事情;它采用文件位置,加载文件数据并以名称uploadedFile发送文件数据。

您收到错误消息,因为在uploadedFile部分中使用data,您发送的form-data部分没有mimetype和二进制数据,只是本地文件路径字符串,而不是PNG或其他图像数据。 file部分可能完全被忽略,因为它不是服务器所寻找的名称。