5

我正在尝试从 url 获取照片并将其通过管道传输到上传到 amazon s3 存储桶的 PUT 链接中。这个 PUT 链接是一个预先签名的上传 url,所以需要做的就是 PUT 请求的正文需要包含照片数据。

我尝试了以下方法,但它似乎不起作用 - 它似乎没有通过 get 中的任何数据。

var request = require('request');

request.get('https://SomeUrlThatRedirectsAFewTimes.com').pipe(request.put('https://mys3uploadlink.com'));
4

1 回答 1

5

使用 AWS 开发工具包,您可以传递一个流作为Body上传的。所以我只需将流保存到一个变量中,并将其作为正文传递。您可以在此处查看相关文档。

我自己从来没有这样做过,但我假设你会这样做:

function upload(cb) {
   var s3 = new AWS.S3(...);
   var stream = request.get(myURL);
   stream.on('error', cb)
         .on('close', cb);
   var params = {Bucket: 'bucket', Key: 'key', Body: stream};
   var options = {partSize: 10 * 1024 * 1024, queueSize: 1};
   s3.upload(params, options, cb);
}
于 2015-08-04T23:19:07.600 回答