ruby-on-rails - 如何使用 Spree Commerce REST API 上传产品图片

标签 ruby-on-rails ruby spree

我必须将旧的 eshop 迁移到 Spree 上制作的新的。它有很好的 API 来做到这一点。

但是我无法从远程服务器上传图片。这是我在制作新产品时所做的:

require 'nokogiri'
require 'open-uri'
require 'curb'
require 'uri'

http = Curl.post("http://DOMAIN/api/products?product[name]=Test\
  &product[price]=123\
  &product[shipping_category_id]=1\
  &product[taxon_ids]=52\
  &product[sku]=020323232\
  &product[image]=http://www.computercloset.org/Altair_8800_and_Santa.jpg") do |http|
    http.headers['X-Spree-Token'] = 'd60ff5896cef2920d83f18c11b95ee1dff8d9c82d1480cbc'
end

产品正在保存所有参数,图像除外。

我想我的语法有误,但我无法在 http://guides.spreecommerce.com/api/ 上找到关于上传图片的示例或其他信息

最佳答案

您可能无法以这种方式创建图像。

最好的办法是使用这个未记录的 API 调用直接创建图像:

https://github.com/spree/spree/blob/v2.2.0/api/app/controllers/spree/api/images_controller.rb

从 2.2.0 开始,您可以指定以下参数: :alt, :attachment, :position, :viewable_type, :viewable_id

我希望您会发现这不足以满足您的需求。特别是,您需要在此过程中单独上传文件。这只会创建显示存储位置的图像记录(通过 Paperclip)。像您列出的那样指定完整的 URL 不太可能起作用。它需要是存储在 Paperclip 存储图像的位置的文件的文件名。

这不是一种理想的体验,这可能是此 API 调用未记录的原因。如果您能够修改它以使其更好地工作,您应该向 Spree 团队发送拉取请求。我相信他们会很高兴收到它。

关于ruby-on-rails - 如何使用 Spree Commerce REST API 上传产品图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22311588/

相关文章:

ruby-on-rails - 将 Wicked 生成的 PDF 上传到 Rails 5 中的 AWS S3

Ruby:模块 A 与类 A::B

ruby-on-rails - 在哪里以及我必须做什么来记录我的 Ruby on Rails 应用程序?

ruby-on-rails - 如何在 Rails 中找到关联的源位置

ruby-on-rails - Spree 如何在下拉 Ruby on Rails 中显示变体?

mysql - 带有 MAMP 2.2 的 Mac 上的 "gem install mysql2"

ruby-on-rails - 多种语言模型

ruby-on-rails - 此代码能够从文件系统读取 CSV 文件,但是从 URL 读取呢?

ruby - 在 ERB 模板中转义换行符/行尾

ruby-on-rails - 如何在 spree 管理面板中添加新标签?