我在尝试使用Python将图像上传到Ebay时遇到问题。在正式的Ebay PHP示例之后的6年中,我从未通过VBA在Excel中列出项目出现问题,但无法使其在Python中工作。
我不断收到“图片服务仅支持JPEG,GIF,PNG,BMP和TIFF图像格式的上载。请使用其中一种格式保存的图片版本再试一次。”尽管图片是jpg并通过我的VBA方法上传得很好。
我已经阅读了3天,对请求进行了调整,但无济于事。我敢打赌,这很简单,所以我希望有人可以指出我的错误或提供完整的示例。
更改版本没有什么区别,对于VBA实施,571仍然可以正常工作。
我毫不费力地向可以帮助我完成这项工作的人捐款。
谢谢。
with open(r"H:\temp\earth.jpg","rb") as image_file:
encoded_string = (base64.encodebytes(image_file.read())).decode("utf-8")
mimeBoundary = 'MIME_boundary'
ebayAuthToken = '<token>'
requestHeaders = {
'X-EBAY-API-COMPATIBILITY-LEVEL': '1113','X-EBAY-API-SITEID': '15','X-EBAY-API-DEV-NAME': '<devName>','X-EBAY-API-APP-NAME': '<appName>','X-EBAY-API-CERT-NAME': '<certName>','X-EBAY-API-CALL-NAME': 'UploadSiteHostedPictures','Content-Type': 'multipart/form-data; boundary=' + mimeBoundary
}
xmlRequest = (
'<?xml version="1.0" encoding="utf-8"?>'
'<UploadSiteHostedPicturesRequest xmlns="urn:ebay:apis:eBLBaseComponents">'
'<RequesterCredentials>'
f'<eBayAuthToken>{ebayAuthToken}</eBayAuthToken>'
'</RequesterCredentials>'
'<PictureSet>Supersize</PictureSet>'
'<Version>517</Version>>'
'</UploadSiteHostedPicturesRequest>'
)
firstPart = ''
firstPart += '--' + mimeBoundary + '\r\n'
firstPart += 'Content-Disposition: form-data; name=""XML Payload"' + '\r\n'
firstPart += 'Content-Type: text/xml;charset=utf-8' + '\r\n\r\n'
firstPart += f'{xmlRequest}'
firstPart += '\r\n\r\n'
secondPart += '--' + mimeBoundary + '\r\n'
secondPart += 'Content-Disposition: form-data; name=""dummy""; filename=""dummy"' + '\r\n'
secondPart += 'Content-Transfer-Encoding: binary' + '\r\n'
secondPart += 'Content-Type: application/octet-stream' + '\r\n\r\n'
secondPart += f'{encoded_string}' # image binary data
secondPart += '\r\n'
secondPart += '--' + mimeBoundary + '--' + '\r\n'
fullRequest = firstPart + secondPart
uploadImageResponse = requests.post('https://api.ebay.com/ws/api.dll',data=fullRequest,headers=requestHeaders,verify=False)