我有一个函数可以在单独的javascript文件(s3.js)中获取s3的签名网址。现在,我需要在路由中调用该函数,并将其放置在另一个文件中。 getSignedUrl可以工作,并且我能够正确记录结果。但是它不会将结果传递给调用方函数。
获取签名的url函数(s3.js文件)
getPreSignedurl: function(filekey,callback) {
const bucket = 'bucket-name'
const key = filekey
const signedUrlExpireSeconds = 60 * 5
s3.getSignedUrl('getObject', {
Bucket: bucket,
Key: key,
Expires: signedUrlExpireSeconds
}, function(err, url) {
if (err) return err
else {
console.log(url); //url prints perfectly
callback(url);
}
})
}
上面的函数可以正常工作并记录url,但是不会将url传递给调用方函数。 呼叫者功能看起来像这样
var S3 = require("./s3");
router.post('/get_prifile_pic_upload_presigned_url', passport.authenticate('jwt', {session: false}), authRole, function(req,res, next) {
S3.getPreSignedurl(req.body.filename, function(err, data) {
if (err) return (err);
else {
//cannot get url from here
return res.json({
success: true,
msg: 'presigned',
obj:data
});
}
});
});
我无法从此函数获取签名的内部URL。有人可以帮我吗?