2

我有一个函数可以在单独的 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。谁能帮我解决这个问题?

4

0 回答 0