【问题标题】:Cloudinary generated hidden input valueCloudinary 生成的隐藏输入值
【发布时间】:2015-05-13 15:44:47
【问题描述】:

我正在使用 node.js 为 Cloudinary 生成直接上传文件标签

cloudinary.uploader.image_upload_tag('coverImage', {html: {'class': 'cloudinary-coverImage', format: 'jpg'}})

上传后,表单末尾会自动生成一个隐藏的input标签:

<input type="hidden" name="coverImage" value="image/upload/v1431361091/bns8et8ksrx3km5esdpj.jpg#d36285fd9bcccd5a2034b22ebf69d867fcee0bbc">

我意识到输入值与文档中所说的不完全一样,因此当我将其存储在数据库中时,这不会生成正确的图像

cloudinary.image(abc.coverImage)

如何在隐藏的输入值中获取图片的确切公共 ID?

【问题讨论】:

  • 这也让我很困惑......为什么 Cloudinary gem 不只保存公共 ID?不这样做会导致 cl_image_tag 方法不起作用...

标签: cloudinary


【解决方案1】:

TL;DR

隐藏输入标签值的格式为{resource_type}/{type}/v{version}/{public_id}.{format}#{signature}。您需要 public_id,在您的示例中为 bns8et8ksrx3km5esdpj

详情

隐藏字段的值包括上传图片的资源类型、版本、公共id和签名。 public_id 是 URI 中哈希 (#) 之前的最后一部分。

参考sample code,取自node.js controller代码,处理上传结果的例子(为了匹配你上面的例子,下面的image_id应该替换为你指定的名称字段,即coverImage):

var Photo = schema.models.Photo;
var photo = new Photo(req.body);

var image = new cloudinary.PreloadedFile(req.body.image_id);
// check that image resolved from image_id is valid
if (image.is_valid()){
  photo.image = image.toJSON();
  console.dir(photo.image)
}
photo.save().then(function(photo){
  console.log('** photo saved')
})

浏览器端

如果你需要在浏览器端直接上传后获取图片的public_id,你应该监听"cloudinarydone"事件:

$("body").on( "cloudinarydone", function(e, data) {
  console.log(data.result.public_id);
});

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 2013-11-17
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多