Download file from url and upload it to AWS S3 without saving - node.js
Here's some javascript that does this nicely:
var options = { uri: uri, encoding: null }; request(options, function(error, response, body) { if (error || response.statusCode !== 200) { console.log("failed to get image"); console.log(error); } else { s3.putObject({ Body: body, Key: path, Bucket: 'bucket_name' }, function(error, data) { if (error) { console.log("error downloading image to s3"); } else { console.log("success uploading to s3"); } }); } });
This is what I did and works nicely:
const request = require('request-promise')const AWS = require('aws-sdk')const s3 = new AWS.S3()const options = { uri: uri, encoding: null};async load() { const body = await request(options) const uploadResult = await s3.upload({ Bucket: 'bucket_name', Key : path, Body : body, }).promise() }
What about something like that:
const stream = require('stream');const request = require('request');const s3 = new AWS.S3()const pass = new stream.PassThrough();request(url).pipe(pass);s3.upload({ Bucket: 'bucket_name', Key: path, Body: pass,});