如何在 Node 中处理来自 googleusercontent CDN 的图像文件?

How to handle an image file from googleusercontent CDN in Node?

正在尝试从 Google CDN 请求图像并将其上传到 S3。 使用 https://github.com/request/request 库和 Node / Express

有点困惑如何处理从 Google CDN 返回的负载。

图像在正​​文字段中返回并经过编码。不确定它是如何编码的。

将 URL 分配给 Google CDN:

const fileURL = https://lh4.googleusercontent.com/EWE1234rFL006WfQKuAVrsYMOiKnM6iztPtLgXM5U…3i26LoPHQwPTQME7ne3XoMriKVjUo3hrhwWw1211223

  request(fileURL, (err, res, body) => {

     //NOT sure how to handle the response here??
     //Trying base64
     fs.writeFileSync(`.tmp/file1.png`, body, {encoding: 'base64'});

     //Trying Binary
     fs.writeFileSync(`.tmp/file.png`, body, {encoding: 'binary'});
  }

正文返回为:

�PNG↵↵IHDRv&vл� IDATx�}���<z�f���];��o]��A�N�.po�/�/R���..............

1).从 googleusercontent Google CDN 请求图像(图像最初粘贴在 Google 文档中)

2).创建图像文件并写入服务器上的磁盘。

fs.writeFileSync 似乎都无法生成可读的图像文件。

关于处理这个问题的任何建议都很棒..

将响应作为正文传递到您的 S3 上传。

var request = require('request'),
    fs = require('fs'),
    aws = require('aws-sdk'),
    s3 = new aws.S3(),
    url = 'https://lh4.googleusercontent.com/-2XOcvsAH-kc/VHvmCm1aOoI/AAAAAAABtzg/SDdN1Vg5FFs/s346/14%2B-%2B1';

# Store in a file
request(url).pipe(fs.createWriteStream('file.gif'));

request(url, {encoding: 'binary'}, function(error, response, body) {
    # Another way to store in a file
    fs.writeFile('file.gif', body, 'binary', function(err) {});

    # Upload to S3
    s3.upload({
        Body: body,
        Bucket: 'BucketName',
        Key: 'file.gif',
    }, function(err, data) {});
});