我有一个函数可以在单独的 javascript 文件(s3.js)中获取 s3 的签名 URL。现在我需要在我的路由中调用该函数,并将其放在另一个文件中。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。谁能帮我解决这个问题?