Javascript Can';无法从NodeJS中的Cloudinary获取图像\u id
我正在使用Node.js和Express。我只是实现了Cloudinary从用户上传图像,并将图像id存储到我的MySQL数据库中 我尝试了Cloudinary文档中的本教程:。一切正常,除了最后一步,我需要获取Javascript Can';无法从NodeJS中的Cloudinary获取图像\u id,javascript,node.js,express,image-uploading,cloudinary,Javascript,Node.js,Express,Image Uploading,Cloudinary,我正在使用Node.js和Express。我只是实现了Cloudinary从用户上传图像,并将图像id存储到我的MySQL数据库中 我尝试了Cloudinary文档中的本教程:。一切正常,除了最后一步,我需要获取图像\u id var url=require('url')) var url\u parts=url.parse(req.body.coverurl,true) console.log(url\u parts)//调试 var query=url\u parts.query conso
图像\u id
var url=require('url'))
var url\u parts=url.parse(req.body.coverurl,true)
console.log(url\u parts)//调试
var query=url\u parts.query
console.log(query)//调试
var preload_file=new cloudinary.preload文件(query.image_id)
if(预加载的\u文件。是否有效(){
var image_id=预加载的_文件.identifier()
console.log(“Img ID:+image\u ID”)
}否则{
console.log(“上传签名无效”)
}
req.body.coverurl
类似于:image/upload/v1426989769/f08eodnwt5zqfwb2bgpd.png#f63f1fe77c7f536447e079f3dd10829b5a15d862
url\u部分
是:
{协议:空,
斜杠:空,
auth:null,
主机:空,
端口:null,
主机名:null,
散列:“63F1FE77C7F536447E079F3DD10829B5A15D862”,
搜索:“”,
查询:{},
路径名:“image/upload/v1426989769/f08eodnwt5zqfwb2bgpd.png”,
路径:“image/upload/v1426989769/f08eodnwt5zqfwb2bgpd.png”,
href:'image/upload/v1426989769/f08eodnwt5zqfwb2bgpd.png 35; f63f1fe77c7f536447e07e079f3dd10829b5a15d862'}
并且…,变量query
为空<代码>查询。图像\u id无效,因此无法获取图像id,也无法验证签名
我不知道为什么Cloudinary会给出这个无效的回调字符串。或者我该如何解决这个问题
谢谢你的帮助。请原谅我的英语不好:)
更新
我的提交想法.hbs
{{{imgtag}}}
拯救
在我的路线/submit.js中
router.get('/submit/idea',函数(req、res、next){
//只需使用一些Cloudinary变量呈现submit_idea.hbs
})
router.post('/submit/idea',函数(req、res、next){
var url=require('url')
var url\u parts=url.parse(req.body.coverurl,true)
var query=url\u parts.query
var preload_file=new cloudinary.preload文件(query.image_id)
if(预加载的\u文件。是否有效(){
var image_id=预加载的_文件.identifier()
console.log(“Img ID:+image\u ID”)
}否则{
console.log(“上传签名无效”)
}
//将图像id添加到mysql
})
我猜cloudinary站点中的文档是错误的或过时的。尝试验证您的上传,如下所示。它应该会起作用
router.post('/submit/idea', function(req, res, next){
/*REMOVE THESE PARTS. I guess these are not needed any more.
var url = require('url')
var url_parts = url.parse(req.body.coverurl, true)
var query = url_parts.query
*/
//Directy pass coverurl to PreloadedFile method.
var preloaded_file = new cloudinary.PreloadedFile(req.body.coverurl)
if (preloaded_file.is_valid()) {
var image_id = preloaded_file.identifier()
console.log("Img ID:" + image_id);
// add image_id to mysql
} else {
console.log("Invalid upload signature")
}
})
没错。我们的文件已经过时了!为什么使用req.body.coverurl而不是req.url?我已经更新了这个问题。我认为req.url只是得到类似于
/submit/idea
;不是上传图像的标识符。我猜您要查找的是public_id。在您的示例f08eodnwt5zqfwb2bgpd中。我想你们可以从url_部分的路径中提取它,然后尝试验证它。哦,是的!你是对的。文件已经过时了。利用你的想法,我读了这本书。所以我发现只需要使用preload文件方法,我们就可以获得公共\u id
。太酷了。谢谢你的帮助。:)太好了,它对你有用。此外,我认为您应该在if(预加载的_file.is_valid()){……这里..}中向mysql添加图像_id