You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware二进制内容上传媒体失败,求请求配置及Body示例

Shopware Admin API 二进制媒体上传请求构造指南

核心请求结构

  • 请求方法:POST
  • 目标端点:/api/_action/media/upload

必备请求头

必须设置以下HTTP头,少一个都可能导致上传失败:

  • Authorization: Bearer {你的Admin API令牌}
  • Content-Type: 匹配图片的MIME类型,比如image/jpeg、image/png、image/webp
  • Filename: 上传后媒体文件的名称,比如product-main.jpg
  • sw-context-token: 后台操作上下文令牌(如果是从Shopware后台发起的请求,这个头是必须的)

请求体要求

直接将图片的二进制内容作为请求体发送,不需要包装成JSON、表单或其他格式,就是图片原始的二进制数据。

示例:用curl上传

curl -X POST \
  https://你的Shopware店铺域名/api/_action/media/upload \
  -H 'Authorization: Bearer YOUR_ADMIN_API_TOKEN' \
  -H 'Content-Type: image/png' \
  -H 'Filename: sample-product.png' \
  -H 'sw-context-token: YOUR_CONTEXT_TOKEN' \
  --data-binary '@/本地图片路径/sample-product.png'

常见踩坑点

  • 遗漏Filename头:API无法识别文件名称,直接返回错误
  • Content-Type不匹配:比如把PNG图片标注成image/jpeg,会导致媒体无法正常解析
  • 令牌权限不足:确保你的API令牌拥有media:create权限
  • 错误使用multipart/form-data:直接传二进制时不能用表单编码的Content-Type,必须用对应图片的MIME类型

代码示例(PHP)

$apiUrl = 'https://你的Shopware店铺域名/api/_action/media/upload';
$token = 'YOUR_ADMIN_API_TOKEN';
$contextToken = 'YOUR_CONTEXT_TOKEN';
$imagePath = '/本地图片路径/shop-logo.png';

$headers = [
    "Authorization: Bearer {$token}",
    "Content-Type: image/png",
    "Filename: shop-logo.png",
    "sw-context-token: {$contextToken}"
];

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($imagePath));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

// 打印返回结果,成功会返回媒体实体的JSON数据
var_dump($response);

内容的提问来源于stack exchange,提问作者Vlora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:24:51