Amazon s3 从AmazonS3获取文件到客户端web应用程序-是否应该通过web API实现?
我正在创建一个ASP.NETCore2.1WebAPI。前端(以Angular编写)将使用此API,它用于许多事情,其中之一是保存和检索文件(图片、PDF和Word文档等) 我们正在AmazonS3上存储所有这些文件。我在看一个教程视频(),其中一个家伙展示了如何创建一个bucket,以及如何从AmazonS3从ASP.NETCore2.0WebAPI上传和下载一个文件,我认为这非常棒,因为这正是我所需要的 但后来我意识到,尽管上传功能可能有用,但下载功能可能不有用。原因是,如果用户通过客户端web应用程序请求一个文件(存储在Amazon S3上),并且该请求发送到API(这是我的初衷),那么API必须首先从S3下载该文件(可能需要几秒钟),然后将其发送到客户端(再过几秒钟)。因此,文件被传输了两次,因此不必要地减慢了从S3向客户端获取文件的过程Amazon s3 从AmazonS3获取文件到客户端web应用程序-是否应该通过web API实现?,amazon-s3,asp.net-core-webapi,asp.net-core-2.1,Amazon S3,Asp.net Core Webapi,Asp.net Core 2.1,我正在创建一个ASP.NETCore2.1WebAPI。前端(以Angular编写)将使用此API,它用于许多事情,其中之一是保存和检索文件(图片、PDF和Word文档等) 我们正在AmazonS3上存储所有这些文件。我在看一个教程视频(),其中一个家伙展示了如何创建一个bucket,以及如何从AmazonS3从ASP.NETCore2.0WebAPI上传和下载一个文件,我认为这非常棒,因为这正是我所需要的 但后来我意识到,尽管上传功能可能有用,但下载功能可能不有用。原因是,如果用户通过客户端w
我的想法正确吗?如果Angular客户端直接从S3检索文件而不是通过API检索文件,会更好吗?就速度而言?Amazon
SDK
有一种处理所有场景的方法。这里的原则是使用SDK
从Amazon S3
获取签名URL,然后将其传递到前端
import * as AWS from "aws-sdk/global";
AWS.config.update({
region: env.bucketRegion,
});
let clientParams:any = {
region: env.bucketRegion,
apiVersion: '2006-03-01',
params: {Bucket: env.rekognitionBucket}
};
if (environment.s3_endpoint) {
clientParams.endpoint = env.s3_endpoint;
}
let s3 = new S3(clientParams);
let url = s3.getSignedUrl('getObject', {
Bucket: env.rekognitionBucket,
Key: '1234.txt',
});
好吧,我不知道。谢谢Abderrain!