Cloudinary生成隐藏的输入值

时间:2015-05-11 16:32:32

标签: cloudinary

我正在使用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">

我意识到输入值不完全是文档中所说的公共ID,因此当我将其存储在数据库中时,这将无法生成正确的图像

cloudinary.image(abc.coverImage)

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

1 个答案:

答案 0 :(得分:0)

TL; DR

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

详细

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

请参阅来自node.js sample code代码的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')
})

Brower方

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

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