@hardwellZero

Async upload AWS S3?

Здравствуйте.
Есть необходимость скачать картинку, загрузить ее на 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';
};
  • Вопрос задан
  • 296 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы