2017-06-02 18 views
1

文字列からcsvを作成してS3バケットにアップロードしようとしています。私はファイルを書いたくありません。私はそれをすべて記憶に残しておきたい。ファイルとメモリなしでS3にファイルストリームをアップロード

私のストリームを取得するファイルからの読み込みを希望しません。私はファイルを使ってストリームを作りたいと思っています。このメソッドはcreateReadStreamですが、ファイルの代わりにストリームの内容を含む文字列を渡したいと思います。

var AWS  = require('aws-sdk'), 
    zlib  = require('zlib'), 
    fs  = require('fs'); 
    s3Stream = require('s3-upload-stream')(new AWS.S3()), 

// Set the client to be used for the upload. 
AWS.config.loadFromPath('./config.json'); 

// Create the streams 
var read = fs.createReadStream('/path/to/a/file'); 
var upload = s3Stream.upload({ 
    "Bucket": "bucket-name", 
    "Key": "key-name" 
}); 

// Handle errors. 
upload.on('error', function (error) { 
    console.log(error); 
}); 

upload.on('part', function (details) { 
    console.log(details); 
}); 

upload.on('uploaded', function (details) { 
    console.log(details); 
}); 

read.pipe(upload); 

答えて

1

ReadableStreamを作成し、それに直接文字列をプッシュして、s3Streamインスタンスで使用することができます。

const Readable = require('stream').Readable 

let data = 'this is your data' 
let read = new Readable() 
read.push(data) // Push your data string 
read.push(null) // Signal that you're done writing 

// Create upload s3Stream instance and attach listeners go here 

read.pipe(upload) 
関連する問題