angular - 如何使用 angular 在 s3 中使用带有多个文件的预签名 url

我有一个名为 students 的列表。假设它包含 100 个项目。所以每个学生的专业照片都存储在 s3 存储桶中,文件名是学生 ID。

我的问题是如何使用预签名 url 访问所有这些图像。

如果我在获取数据时生成 url,我认为这是一个不好的做法,因为它需要一些时间才能在服务器端完成。 我无法存储它。它会过期,我在很多文章中看到它说这是一种不好的做法。 如何做到这一点。有没有办法在客户端执行此操作?我在客户端使用 Angular 8。

这是我用来生成预签名 url 的代码。这段代码工作正常。但问题是在 url 过期后,再次需要生成它。

const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const s3BucketName = 'media';
exports.handler = async (event) => {
    try{
  const objectKey = '1234.jpg';
  let params = {
        Bucket: s3BucketName,
        Key: objectKey,
        Expires: 60 * 60 * 24 * 365 * 10
     };
    return await s3.getSignedUrlPromise('getObject', params).then(async url => {
         console.log('Successfully generated pre signed image url:', url);



        const payload = {
            message: 'success',
            imageUrl: url
        };
        const response = {
            statusCode: 201,
             body: JSON.stringify(payload),
        };
        return response;
    }).catch(error => {
        console.error(`Failed to generate presigned url: ${error}`);
        return {
            statusCode: error.statusCode || 501,
            body: JSON.stringify({
                message: `Failed to generate presigned url. Request Id: ${context.awsRequestId}`
            })
        };
    });

    }catch(error){
        console.log(JSON.stringify(error));
       const response = {
        statusCode: 501,
        body: JSON.stringify(error),
    };
    return response;  
    }

};

请帮帮我。谢谢

最佳答案

您可以通过生成 getObject presignedURL 并将其返回到前端然后使用 Angular http 客户端发出 http get 请求并返回这些数据来实现此目的。

https://stackoverflow.com/questions/60947489/

相关文章:

python - 与另一个物体接触时改变物体颜色

oracle - 无法使用 confluent CLI : java. sql.SQLExcepti

haskell - 使用 Haskell 从麦克风捕获音频输入?

r - 为什么 ivreg 函数会产生奇怪的错误

c# - TransactionScope 抛出异常 "This platform does not

python-3.x - Python 3.8 将 "open"视为导入的 openpyxl 方法而

python - Flask App 进行多次登录尝试的奇怪行为

r - 将 ggpredict() 和 ggplot2() 与缩放的连续变量一起使用并尝试取消缩放它

perl - 为什么我的 perl Catalyst redirect_and_detach 替换插

maven - Visual Studio Code 终端无法使用代理