Skip to content Skip to sidebar Skip to footer

Node.js Copy Remote File To Server

Right now I'm using this script in PHP. I pass it the image and size (large/medium/small) and if it's on my server it returns the link, otherwise it copies it from a remote server

Solution 1:

You should check out http.Client and http.ClientResponse. Using those you can make a request to the remote server and write out the response to a local file using fs.WriteStream.

Something like this:

var http = require('http');
var fs = require('fs');
var google = http.createClient(80, 'www.google.com');
var request = google.request('GET', '/',
  {'host': 'www.google.com'});
request.end();
out = fs.createWriteStream('out');
request.on('response', function (response) {
  response.setEncoding('utf8');
  response.on('data', function (chunk) {
    out.write(chunk);
  });
});

I haven't tested that, and I'm not sure it'll work out of the box. But I hope it'll guide you to what you need.

Solution 2:

To give a more updated version (as the most recent answer is 4 years old, and http.createClient is now deprecated), here is a solution using the request method:

var fs = require('fs');
var request = require('request');
functiongetImage (img, size, filesize) {
    var imgPath = size + '/' + img + '.jpg';
    if (filesize) {
        return'./images/' + imgPath;
    } else {
        request('http://www.othersite.com/images/' + imgPath).pipe(fs.createWriteStream('./images/' + imgPath))
        return'./images/' + imgPath;
    }
}

Solution 3:

If you can't use remote user's password for some reasons and need to use the identity key (RSA) for authentication, then programmatically executing the scp with child_process is good to go

const { exec } = require('child_process');

exec(`scp -i /path/to/key username@example.com:/remote/path/to/file /local/path`, 
     (error, stdout, stderr) => {

    if (error) {
      console.log(`There was an error ${error}`);
    }

      console.log(`The stdout is ${stdout}`);
      console.log(`The stderr is ${stderr}`);
});

Post a Comment for "Node.js Copy Remote File To Server"