Download file from url and upload it to AWS S3 without saving - node.js

前端 未结 3 1751
天命终不由人
天命终不由人 2020-12-23 20:52

I\'m writing an application which downloads images from a url and then uploads it to an S3 bucket using the aws-sdk.

Perviously I was just downloading images and sav

相关标签:
3条回答
  • 2020-12-23 21:20

    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");
                    }
                }); 
            }   
        });
    
    0 讨论(0)
  • 2020-12-23 21:23

    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,
    });
    
    
    0 讨论(0)
  • 2020-12-23 21:25

    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()
      
    }

    0 讨论(0)
提交回复
热议问题