Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 从AmazonS3获取文件到客户端web应用程序-是否应该通过web API实现?_Amazon S3_Asp.net Core Webapi_Asp.net Core 2.1 - Fatal编程技术网

Amazon s3 从AmazonS3获取文件到客户端web应用程序-是否应该通过web API实现?

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

我正在创建一个ASP.NETCore2.1WebAPI。前端(以Angular编写)将使用此API,它用于许多事情,其中之一是保存和检索文件(图片、PDF和Word文档等)

我们正在AmazonS3上存储所有这些文件。我在看一个教程视频(),其中一个家伙展示了如何创建一个bucket,以及如何从AmazonS3从ASP.NETCore2.0WebAPI上传和下载一个文件,我认为这非常棒,因为这正是我所需要的

但后来我意识到,尽管上传功能可能有用,但下载功能可能不有用。原因是,如果用户通过客户端web应用程序请求一个文件(存储在Amazon S3上),并且该请求发送到API(这是我的初衷),那么API必须首先从S3下载该文件(可能需要几秒钟),然后将其发送到客户端(再过几秒钟)。因此,文件被传输了两次,因此不必要地减慢了从S3向客户端获取文件的过程


我的想法正确吗?如果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!