好。 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,我会得到一个破碎的图像。
答案 0 :(得分:4)
您需要做两件事:
尝试一下:
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);
});
}
});