从node.js上传后无法获取s3存储桶对象的公共链接

问题描述 投票:0回答:1

我试图在

multer
@aws-sdk/client-s3
的帮助下将图像从node.js服务器上传到s3存储桶。我使用
aws-sdk
代替
javascript v3
。当我将
aws-sdk
用于 javacript v2 时,我可以使用
Location
属性获取上传图像的链接。但是当使用 v3 时,Location 属性不存在于我得到的结果对象中。

[
  {
    '$metadata': {
      httpStatusCode: 200,
      requestId: 'REQUEST ID',
      extendedRequestId: 'ID HERE',
      cfId: undefined,
      attempts: 1,
      totalRetryDelay: 0
    },
    ETag: '"EFTAG HERE"',
    ServerSideEncryption: 'AES256'
  }
]

是否有任何函数或任何其他方法可以获取上传图像的链接?

我的目的是将图像存储在 s3 存储桶中并将其链接保存到

mongoDB
数据库。

node.js mongodb amazon-s3 aws-sdk multer
1个回答
0
投票

您是正确的,

Location
键在
aws-sdk
(v2) 中暴露,但在
@aws-sdk/client-s3
中不暴露。

不幸的是,仅使用

@aws-sdk/client-s3
是无法解决这个问题的。

您可以通过使用

@aws-sdk/lib-storage
@aws-sdk/client-s3
来解决此问题。

const client = new Upload({
    client: new S3Client({}),
    params: {
      Bucket: '',
      Key: '',
      Body: '',
    },
});

const { Location } = await client.done()
console.log('url', Location)
© www.soinside.com 2019 - 2024. All rights reserved.