当前位置: 首页 > 知识库问答 >
问题:

使用节点fs从aws s3桶读取文件

昌勇锐
2023-03-14

我正在尝试使用读取aws s3存储桶中的文件

fs.readFile(file, function (err, contents) {
  var myLines = contents.Body.toString().split('\n')
})

我已经能够使用节点aws-sdk下载和上传文件,但是我不知道如何简单地读取它并解析内容。

下面是我如何从s3读取文件的示例:

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myKey.csv'}
var s3file = s3.getObject(params)

共有3个答案

商和雅
2023-03-14

因为你似乎想逐行处理一个S3文本文件。下面是一个使用标准readline模块和AWS的createReadStream()的节点版本

const readline = require('readline');

const rl = readline.createInterface({
    input: s3.getObject(params).createReadStream()
});

rl.on('line', function(line) {
    console.log(line);
})
.on('close', function() {
});
阙博容
2023-03-14

这将做到:

new AWS.S3().getObject({ Bucket: this.awsBucketName, Key: keyName }, function(err, data)
{
    if (!err)
        console.log(data.Body.toString());
});
贲永思
2023-03-14

你有几个选择。您可以将回调作为第二个参数,它将与任何错误消息和对象一起调用。这个例子直接来自AWS留档:

s3.getObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

或者,您可以将输出转换为流。AWS留档中也有一个例子:

var s3 = new AWS.S3({apiVersion: '2006-03-01'});
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);
 类似资料:
  • 问题内容: 我正在尝试使用AWS S3存储桶中的文件进行读取 我已经能够使用节点aws-sdk下载和上传文件,但是我对如何简单地读取文件并解析内容感到困惑。 这是我从s3中读取文件的示例: 问题答案: 您有两种选择。您可以包括一个回调作为第二个参数,该参数将与任何错误消息和对象一起调用。该示例直接来自AWS文档: 或者,您可以将输出转换为流。AWS文档中还有一个示例:

  • 我想读一本书的内容。存储在s3存储桶中的txt文件。 我试过: 但是我得到的s3file对象不包含文件的内容。 你知道该怎么做吗?

  • 我不知道这是如何可能的编程新我想打印值,在abc.txt中存在,但不知道如何做到这一点,使用节点js 预期输出:

  • 我不熟悉node。js被困在这里了。我有一个json文件keyValue。类似于此的json 对于特定的键,我需要获取值。 如何在node中实现这一点。js。谢谢你的帮助。

  • 我刚接触骆驼,需要一些指导。我需要从S3存储桶中读取一些文件。结构是这样的。 当一个特定的excel文件被放入传入的/xls文件夹(比如file1.xls)时,我需要拾取所有文件,进行一些处理并将它们放入具有相同目录结构的已处理文件夹中。 我需要使用什么组件?我试着阅读留档,但有点难以弄清楚我需要什么组件。我知道我会使用camel-aws-s3插件,但那里没有很多例子。

  • 我通过执行以下操作读取S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于打开(filename).readlines()。最好的方法是什么?