我正在尝试编写一个程序,当将 .csv 或 .txt 文件上传到 s3 存储桶时,该程序将读取该文件的内容,并将输出存储为变量,以便代码根据内容进行交互。文件包含。我尝试过使用 fs,但找不到任何其他可以完成该任务的东西。请让我知道该怎么做或者在哪里可以找到答案或者我的代码有什么问题。谢谢!
var sdk = require('aws-sdk');
var nodemailer = require('nodemailer');
var async = require('async');
var fs = require('fs');
exports.handler = function(event, context) {
var transport = nodemailer.createTransport({
service: 'Yahoo',
auth: {
user: 'pni.robot@yahoo.com',
pass: 'automatic545Emails'
}
});
var srcKey =
decodeURIComponent(event.Records[0].s3.object.key.replace(/\*/g, " "));
var arr = srcKey.split('.');
var obj = decodeURIComponent(event.Records[0].s3.object);
console.log(arr);
//console.log(event.Records[0]);
var fileType = arr.pop();
var fileName = arr.join('.');
console.log("File detected with name: " + fileName);
console.log("File detected with extension: " + fileType);
//The following code does not work
//It cannot read srcKey because srcKey is just a text value
//I am just keeping it here until I find a better alternative
if (fileType === 'csv') {
console.log('.csv file detected.');
fs.readFile(srcKey, function(err, data) {
if (err) {
return console.error(err);
}
var contents = data.toString;
console.log("Email Robot read: " + data.tostring());
console.log(contents);
});
};
var mailOptions = {
from: 'pni.robot@yahoo.com',
to: 'teranai@reed.edu',
subject: 'Email Program',
text: 'A .' + fileType + ' file titled "' + fileName + '.' + fileType + '" has been uploaded to the S3 bucket "pnilambdabucket".'
}
transport.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message Sent: ' + info.response);
context.done();
});
};
最佳答案
关于javascript - 使用 Node.js 读取上传到亚马逊 s3 存储桶的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929392/