通过PrestaShop Webservice API上传商品图片报错求助
调试PrestaShop Webservice API商品图片上传问题
错误原因分析
你的代码存在三个关键问题导致服务器无法识别图片参数:
- 手动指定
Content-Type:手动设置multipart/form-data会阻止requests自动添加表单分隔符(boundary),服务器无法正确解析文件字段 - Authorization格式错误:
Basic + ASDJJKHNKJASNDIAASDASD中的+是多余的,正确格式应为Basic [Base64编码的凭证] - 冗余参数:URL已经指定了商品ID(
/products/116),payload中的id_product参数无需重复提交
修正后的代码
import requests url = "http://127.0.0.1/prestashop/api/images/products/116" files = [ ('image', ('20110101jpg-1.jpeg', open('/home/admin/Downloads/20110101jpg-1.jpeg', 'rb'), 'image/jpeg')) ] headers = { 'Authorization': 'Basic ASDJJKHNKJASNDIAASDASD', # 移除多余的+ 'Cookie': 'PHPSESSID=6nhmk9jtmlta9r11f40g725cjk; PrestaShop-1c321b2b9a97944d3662932a96e7184f=def50200e83bedeaa690e780a78a450a6688a6aaafe245f6be864dcbe23aef85cfe6c178b21a25e652b8fac90b2af0a737d5668ba741a5faf523f6477121e4469f9928becfef69065d1afaccf437ea5b1900ec10c2799e13b05b3c9e1de2bcee3556af19b5d365d9d2c8f6dc7de5b98ed799f2a178a508fb2eede2cf4c49e5189988c04ed94b1a6ed9a6e7ebe9a7f8845341ccc9612ba27960d1bd28cf4299f32c7562420cb6399af72ee7f65c63d0557110daf03c586ad0b762d3920bde0a1d7d973ca4d1969ab836b038c64656753d89a3b5d7fb14510f9ab4e735cd740e192a1a09d79901263a08d3cf2d046e775bfcf27d84' } response = requests.post(url, headers=headers, files=files) print(response.text)
额外注意事项
- 确认Authorization头中的Base64字符串是
PrestaShop用户名:API密钥的Base64编码结果 - 检查图片文件路径是否正确,当前用户对文件有可读权限
- 如果需要设置图片为商品封面或调整显示位置,可添加data参数,示例:
data = {'cover': '1', 'position': '1'} response = requests.post(url, headers=headers, files=files, data=data)
内容的提问来源于stack exchange,提问作者Đức Anh Lê Bá
相关产品推荐
相关产品推荐

