在我们作为开发人员的日常生活中,我们面临许多问题。我们的生活就是解决这些小问题。
您可能在某个时候使用过 Amazon S3 来存储应用程序的文件(图像、视频、文档等)。
今天,在本文中,我们将讨论从 Amazon S3 下载文件的方法。
什么是 Amazon S3?
根据 Amazon S3 的文档,
Amazon Simple Storage Service (Amazon S3)是一种提供行业领先的可伸缩性、数据可用性、安全性和性能的对象存储服务。不同规模和行业的客户可以存储和保护任何数量的数据,用于数据湖、云原生应用程序和移动应用程序等几乎任何用例。借助经济实惠的存储类和易于使用的管理功能,您可以优化成本,组织数据,并配置精细调整的访问控制以满足特定的业务、组织和合规要求。
这是存储应用程序的大型文件的绝佳且简单的方式。
什么是预签名的 Amazon S3 URL?
当我们想要访问 Amazon S3 中的文件时,我们需要登录 AWS 并查看文件。
**如果我们希望任何人都可以在互联网上访问该文件怎么办?**我们可以通过生成预签名 URL 来实现。
Amazon S3 文件的预签名 URL 就是包含额外参数的 URL,以便互联网上的任何人都可以轻松地下载文件而不费力。
以下是预签名 URL 的示例:
presignedurldemo.s3.eu-west-2.amazonaws.com/image.png?X…
正如您在上面的示例中看到的,在 URL 中附加了一些额外的参数,例如 X-Amz-Algorithm、X-Amz-Credential、X-Amz-Date、X-Amz-Expires、X-Amz-Signature、X-Amz-SignedHeaders,这有助于轻松下载文件。
如何下载该文件?
现在您拥有了一个预签名的 Amazon S3 URL,您可以轻松地以编程方式下载文件。
使用以下代码下载文件:
function downloadFile(presignedUrl, fileName) {
const link = document.createElement("a");
link.href = presignedUrl;
link.download = fileName;
link.target = "_blank";
link.click();
}
这就是全部。
如果您不想使用预签名 URL 方式怎么办?
没问题,您可以使用 AWS SDK 轻松地从 Amazon S3 下载任何文件。
以下是一个示例示例:
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
const client = new S3Client({}) // Here credentials comes in picture
export const main = async () => {
const command = new GetObjectCommand({
Bucket: "bucket-1",
Key: "hello-world.txt"
});
try {
const response = await client.send(command);
const str = await response.Body.transformToString();
console.log(str);
} catch (err) {
console.error(err);
}
};
这段代码从 Amazon S3 存储桶中检索文件。
就是这样。