如何使用 request.js 将网络图像通过管道传输到 s3 上传链接

Mon*_*key 5 node.js node-request

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

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

var request = require('request');

request.get('https://SomeUrlThatRedirectsAFewTimes.com').pipe(request.put('https://mys3uploadlink.com'));
Run Code Online (Sandbox Code Playgroud)

tst*_*rzl 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);
}
Run Code Online (Sandbox Code Playgroud)