Rails将图像上传到Cloudinary

时间:2014-10-01 01:11:58

标签: ruby-on-rails backbone.js cloudinary

我正在尝试从客户端Backbone应用程序上传图像到Cloudinary。

他们的文档显示您应该创建如下输入:

<input name="file" type="file" 
       class="cloudinary-fileupload" data-cloudinary-field="image_upload" 
       data-form-data=" ... html-escaped JSON data ... " ></input>

示例的JSON:

{ "timestamp":  1345719094, 
  "callback": "https://www.example.com/cloudinary_cors.html",
  "signature": "7ac8c757e940d95f95495aa0f1cba89ef1a8aa7a", 
  "api_key": "1234567890" }

我正在努力解决的问题是如何生成签名?他们的文档说你必须在服务器端生成它,但我似乎无法在他们的文档中找到如何做到这一点。

此外,最终目标是将返回的图像URL指定为模型属性。我将如何访问返回的图像URL,以便我可以model.save(image: returnedImage)将其保存回我的服务器?

1 个答案:

答案 0 :(得分:1)

这是关于如何生成签名的Cloudinary的文档: http://cloudinary.com/documentation/upload_images#request_authentication

虽然签名基于您的帐户api_secret,但不应在客户端代码中显示,但您应在服务器端生成签名。 Cloudinary的客户端集成库包括用于生成签名的辅助方法。例如,(在Rails中): https://github.com/cloudinary/cloudinary_gem/blob/c3aa5dd4aa9c7a55159d88b1221271f351324475/lib/cloudinary/utils.rb#L203

您还可以使用这些库生成图片上传标签,该标签会自动为您完成签名生成: http://cloudinary.com/documentation/rails_image_upload#direct_uploading_from_the_browser

此外,您可能需要考虑使用未签名的上传,也可以上传到Cloudinary而不生成签名: http://cloudinary.com/blog/direct_upload_made_easy_from_browser_or_mobile_app_to_the_cloud