Здравствуйте.
Есть необходимость скачать картинку, загрузить ее на AWS S3, потом удалить.
Если не прийдется скачивать - будет вообще отлично, держать ее в памяти или что-то подобное...
Это пример контроллера для koajs.
В респонсе обратно я конечно же хочу отдать ссылку на файл на S3.
exports.updatePhoto = async function (ctx) {
let url = 'http://cs8.pikabu.ru/post_img/2017/06/23/8/149822058719807864.jpg';
let timestamp = + new Date();
let filename = config.aws.userFolder + '/' + timestamp + '.png';
await request(url).pipe(fs.createWriteStream('test.png'));
let read = await fs.createReadStream('test.png');
let upload = s3Stream.upload({
'Bucket': config.aws.bucketName,
'Key': filename
});
upload.on('error', function (error) {
console.log('ERROR');
console.log(error);
ctx.body = {error: error};
});
upload.on('uploaded', function (details) {
console.log('DONE');
console.log(details);
ctx.body = {url: details.Location};
});
await read.pipe(upload);
// await fs.unlink('test.png', function(err) {
// console.log(err);
// });
ctx.body = 'Hello';
};