javascript - Cloudinary jquery上传未正确保存image_id

标签 javascript jquery ruby-on-rails cloudinary

我使用 Cloudinary 和 jquery 直接从 RoR 应用程序中的浏览器上传图像。我想我已经按照 here 的说明进行操作几乎完全正确。

图像上传正常,但返回的 params[:image_id] 似乎在 # 符号后附加了签名,如下所示:

"image_1_id"=>"image/upload/v1383951287/foobar.jpg#b023156dfebede65......."}

所以这最终被保存在模型上。然后,当我尝试使用以下方法检索图像时:

<%= cl_image_tag(@model.image_1_id) %>

按照文档中的建议,url 不仅附加了签名,还复制了前面的部分路径,如下所示:

http://res.cloudinary.com/.../image/upload/v1/image/upload/v1383951287/foobar.jpg%23b023156d...

显然这个链接不起作用,但是如果你删除重复的路径和末尾的签名,它就起作用了。

我没有使用 CarrierWave,部分原因是文档中几乎没有(没有?)说明如何或为何将其与非服务器端图像上传一起使用。另外,我正在使用 form_for 来表示图像和其他属性,这可能是问题所在吗?表格如下所示:

<%= form_for @model do |f| %>
...
<%= f.cl_image_upload(:image_1_id) %>
...
<% end %>

非常感谢任何帮助。我对这些东西还很陌生,所以这可能是我错过的一些简单的东西。但值得一提的是,控制台中没有错误,并且 JS 文件似乎加载正确。

最佳答案

photo album cloudinary_gem 示例文件夹中的示例项目展示了如何使用 Cloudinary 与 CarrierWave 集成进行直接上传和通过服务器上传的示例。

您看到的返回值的结构符合其应有的结构。这就是从 Cloudinary 返回预加载文件 URI 的方式。如果您不想使用 CarrierWave,您仍然可以使用 PreloadedFile 。将您从 Cloudinary 收到的内容输入到 PreloadedFile 的构造函数中可以达到双重目的,即允许您使用返回的签名验证上传(请参阅有效?)并翻译该签名值转换为可以输入到 cl_image_tag 中的内容(请参阅identifier)。

您可以保留完整返回的 URI 并在使用时对其进行翻译,也可以将翻译后的值存储到数据库中。

关于javascript - Cloudinary jquery上传未正确保存image_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870169/

相关文章:

javascript - 包含在 jquery 中

javascript - 如何翻转 SVG 坐标?

javascript - io.emit 与 socket.emit

javascript - jquery移动滑动功能

javascript - JQuery Chosen 防止自动垂直滚动

javascript - javascript 中的 css 重要不工作

javascript - 如何弹出一个包含星级评级系统的窗口,以便用户可以输入他的评级

MySQL 到 Postgres 的转换

ruby-on-rails - ActionController::InvalidAuthenticityToken

ruby-on-rails - rails : How do I filter a ActiveRecord collection result without making new db queries?