我需要使用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.]
答案 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
部分可能完全被忽略,因为它不是服务器所寻找的名称。