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 web services 来自bucket的AWS s3 V3 Javascript SDK流文件(GetObjectCommand)_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 来自bucket的AWS s3 V3 Javascript SDK流文件(GetObjectCommand)

Amazon web services 来自bucket的AWS s3 V3 Javascript SDK流文件(GetObjectCommand),amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我查看了所有的AWS站点和堆栈溢出(甚至进入了谷歌的第4页!!!),但我一辈子都无法解决如何从S3流式传输文件。V3的文档非常无用,我找到的所有示例都来自V2 V3使用的send commond只返回一个承诺,那么我如何获取一个流并通过管道传输它,而不是等待整个文件(它需要通过管道传输到加密算法,然后再传输到响应流) 我能够上传罚款通过传递流作为身体,有什么我必须做类似的事情在这里 uploadToAws(key) { const pass = new PassThrough();

我查看了所有的AWS站点和堆栈溢出(甚至进入了谷歌的第4页!!!),但我一辈子都无法解决如何从S3流式传输文件。V3的文档非常无用,我找到的所有示例都来自V2

V3使用的send commond只返回一个承诺,那么我如何获取一个流并通过管道传输它,而不是等待整个文件(它需要通过管道传输到加密算法,然后再传输到响应流)

我能够上传罚款通过传递流作为身体,有什么我必须做类似的事情在这里

  uploadToAws(key) {
    const pass = new PassThrough();

    return {
      writeStream: pass,
      promise: this.s3.send(
        new PutObjectCommand({
          Bucket: '...',
          Key: key,
          Body: pass,
          ServerSideEncryption: '...',
          ContentLength: 37,
        }),
      ),
    };
  }

GetObjectCommand
中的
Body
是一个可读流()

因此,您可以:

const命令=新建GetObjectCommand({
水桶
钥匙
});
const item=wait s3Client.send(命令);
item.Body.pipe(createWriteStream(文件名));

GetObjectCommand
中的
Body
是一个可读流()

因此,您可以:

const命令=新建GetObjectCommand({
水桶
钥匙
});
const item=wait s3Client.send(命令);
item.Body.pipe(createWriteStream(文件名));

您先生/夫人是一位传奇人物。非常感谢。不清楚,我必须等待承诺的回应,然后从中检索流。您先生/夫人是一位传奇人物。非常感谢。不清楚我必须等待promise响应并从中检索流。
  uploadToAws(key) {
    const pass = new PassThrough();

    return {
      writeStream: pass,
      promise: this.s3.send(
        new PutObjectCommand({
          Bucket: '...',
          Key: key,
          Body: pass,
          ServerSideEncryption: '...',
          ContentLength: 37,
        }),
      ),
    };
  }