Shopify内容板块Files上传图片:求可用API/GraphQL端点
上传文件至Shopify内容板块Files区域的可行方案
REST Admin API 实现
正确端点
使用Files专属的API端点,而非主题资源端点:POST /admin/api/{api_version}/files.json
(将{api_version}替换为你正在使用的Shopify API版本,如2024-04)
请求要求
- 权限:访问令牌需包含
write_files权限 - 请求头:
X-Shopify-Access-Token: {你的商店访问令牌}- 根据上传方式设置
Content-Type:- 本地文件上传:
multipart/form-data - 远程URL上传:
application/json
- 本地文件上传:
上传示例
1. 从远程URL上传
请求体(JSON格式):
{ "file": { "url": "https://your-domain.com/target-image.jpg", "alt": "图片描述文本", "content_type": "image/jpeg" } }
2. 上传本地文件
以multipart/form-data格式提交,表单字段包含:
file[attachment]:本地文件的二进制流file[alt](可选):图片描述file[content_type]:文件MIME类型(如image/png)
GraphQL 实现
基础上传(远程URL)
使用fileCreate mutation,示例查询:
mutation { fileCreate( files: [ { alt: "图片描述" contentType: IMAGE_JPEG originalSource: "https://your-domain.com/target-image.jpg" } ] ) { files { id url alt } userErrors { field message } } }
本地文件上传
通过base64编码传递文件内容,结合变量实现:
查询语句
mutation fileCreate($files: [FileCreateInput!]!) { fileCreate(files: $files) { files { id url } userErrors { message } } }
变量(JSON格式)
{ "files": [ { "alt": "本地上传图片", "contentType": "IMAGE_PNG", "attachment": "<本地文件的base64编码字符串>" } ] }
关于主题资源端点的说明
你之前使用的POST /admin/api/2023-10/themes/<theme_id>/assets.json仅用于上传主题专属静态资源(如主题模板内的图片、样式文件),这类资源归属于特定主题,不会出现在内容板块的Files全局存储区域,因此无法满足需求。
内容的提问来源于stack exchange,提问作者yoooku
相关产品推荐
相关产品推荐

