请求上传代码
import requests
url = "https://127.0.0.1:22553/api/upload"
files=[
('file',('094718.pdf',open('094718.pdf','rb'),'application/pdf'))
]
headers = {
'X-Requested-With': 'XMLHttpRequest',
'authorization': 'Bearer ...',
'Content-Type': 'multipart/form-data;'
}
response = requests.request("POST", url, headers=headers, files=files)
print(response.text)
问题描述
在使用该代码请求上传的时候,一直报错{"files":{"file":["Missing data for required field."]}}
解决方法
移除headers中的'Content-Type': 'multipart/form-data;'
问题原因
在使用 requests
库发送带有文件的 multipart/form-data
请求时,不需要手动设置 'Content-Type': 'multipart/form-data;'
,因为 requests
库会自动识别请求中是否包含文件,并设置正确的 Content-Type
。
当你手动设置了 'Content-Type': 'multipart/form-data;'
时,可能会干扰 requests
库自动识别请求内容的功能,导致服务器无法正确解析请求。因此,去除这个头部字段后,请求成功上传文件是符合预期的行为。
总而言之,对于发送文件的请求,推荐不要手动设置 'Content-Type': 'multipart/form-data;'
,而是让 requests
库自动处理请求的 Content-Type
。这样可以避免一些潜在的问题,并保持代码的简洁性和可读性。