【问题标题】:Using NodeJS and request module and aws-sdk to move images from Parse to S3/CloudFront使用 NodeJS 和请求模块和 aws-sdk 将图像从 Parse 移动到 S3/CloudFront
【发布时间】:2013-12-31 01:27:23
【问题描述】:

好的。 NodeJS 使用请求模块。在 Parse 中下载资源(在 S3 中),我想使用 aws-sdk 节点模块上传到我的 S3 存储桶(在 CloudFront 端点之后)。这是我的代码:

var AWS = require('aws-sdk');
var request = require('request');

AWS.config.loadFromPath('./aws-config.json');
var s3 = new AWS.S3();

var url = "http://files.parse.com/[the rest of the url]";

request(url, function (error, response, body) {
    console.log(response);
    if (!error && response.statusCode == 200) {
        s3.putObject({
            "Body": body,
            "Key": "thumbnail2.jpg",
            "Bucket": "[my-bucket]"
        }, function (error, data) {
            console.log(error || data);
        });
    }
});

如果我打开解析 url,我会看到图像。如果我打开存储桶中的 url,我会得到一个损坏的图像。

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 request


    【解决方案1】:

    你需要做两件事:

    • 将请求的编码设置为二进制
    • 将二进制缓冲区传递给 S3

    试试这个:

                var options = {
                    uri: "http://files.parse.com/[the rest of the url]",
                    encoding: 'binary',
                };
    
                request(options, function (error, response, body) {
                    if (!error && response.statusCode == 200) {
                        s3.putObject({
                            "Body": new Buffer(body, 'binary'),
                            "Key": "thumbnail2.jpg",
                            "Bucket": "[my-bucket]"
                        }, function (error, data) {
                            console.log(error || data);
                        });
                    }
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-30
      • 2020-06-07
      • 1970-01-01
      • 2017-09-04
      • 2021-01-01
      • 1970-01-01
      • 2012-06-19
      • 2017-10-13
      相关资源
      最近更新 更多