AWS-使用Angular 6从存储桶中读取文件内容

时间:2018-07-22 11:46:26

标签: angular amazon-web-services amazon-s3

所以我是Typescript和Amazon的新手。...

我需要从S3存储桶中获取文件并在其视图中显示其内容(例如readme.txt)。

我已经完成了获取对象的工作,但是在打字稿/ angular中找不到如何实际读取文件。此示例

https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingJava.html

显示了Java示例,但它依赖于缓冲区和流读取器,我认为它不存在于angular吗?

    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String line = null;
    while ((line = reader.readLine()) != null) {

了解下一步的一些指导-有人说我必须使用指令??

需要澄清的是-我可以获取数据。主体但是它是一个二进制缓冲区-如何将其恢复为文本?

Tks

1 个答案:

答案 0 :(得分:1)

好的,这是Typescript中的代码。

按照文档中的建议,您可以从data.Body获取正文。

这样做的时候,我可以看到Bodyuint8array,所以我们需要使用TextDecoder来获取它作为字符串。

import { Component, OnInit } from '@angular/core';
import * as AWS from 'aws-sdk';

declare var TextDecoder;

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'app';

  ngOnInit() {
    // Set up credentials
    AWS.config.credentials = new AWS.Credentials({
      accessKeyId: 'YOURKEY', secretAccessKey: 'YOURSECRET'
    });

    const params = {
      Bucket: 'so-test-bucket',
      Key: 'index.html'
    };

    let s3 = new AWS.S3();

    s3.getObject(params, function(err, data) {
      if (err) {
        console.error(err); // an error occurred
      } else {
        const string = new TextDecoder('utf-8').decode(data.Body);
        console.log(string);
      }
    });
  }

}