使用 shopify-api-node 从本地机器上传文件(图片)

Upload file (image) from local machine using shopify-api-node

我正在尝试通过 node.js and shopify-api-node 将本地图片上传到 Shopify 产品。

这是我上传图片的代码部分。

product.images.forEach(async image => {
  Logger.toFile("product.image", image);
  try {
    await this._api.productImage.create(shopifyProduct.id, {
      src: image.src
    });
  } catch (error) {
    Logger.error("Error uploading images.");
    this._handleErrors(error);
  }
})

如果我为 image.src 使用外部 URL,一切正常。

这是使用外部工作的记录器 URL:

[2022-02-01 16:44:38 UTC][Products] product.image {
  src: 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/220px-Image_created_with_a_mobile_phone.png',
  position: 1
}

并且无法正常工作的本地 src:

product.image {
  src: '/Users/radoslav/Server/projects/tmp/pics/264-426.png',
  position: 1
}

路径正确,图像264-426.png存在。

任何建议,我做错了什么,或者是否可以从本地上传图片到 Shopify link?

您正在尝试从当前错误的本地相对路径上传图片。

但我不确定 API 是否使用正确的路径处理本地图像,即使您使用绝对路径也是如此。

最好的方法是使用 Node.js 读取图像并将其转换为 Base64 并以这种方式传递。您可以在此处参考文档:https://shopify.dev/api/admin-rest/2021-07/resources/product-image#[post]/admin/api/2021-07/products/{product_id}/images.json

此外请注意,async/awaitforEach 函数中不起作用。因此,目前您正在同时堆叠所有上传内容,API 不会高兴。

PS: 代我向 Zoro/Marto & Evgeni 致意。 ;)