使用 request.get 文件正文不正确
using request.get file body is not correct
我正在尝试使用 request.js 将文件上传到 s3,但上传后文件数据似乎不正确。我应该改用响应对象的数据 属性 吗?
var flickrPhotoUrl = 'http://c1.staticflickr.com/3/2207/2305523141_1f98981685_z.jpg?zz=1';
request.get(flickrPhotoUrl, function(error, response, body){
if (body) {
s3.upload({
Body: body,
Bucket: 'my-uploads',
Key: 'photo.jpg',
}, function (err) {
done(err);
});
}
else
{
done('no response');
}
});
上传后从s3中抓取文件时,无法识别图像,而且似乎是原来的两倍大。
request
默认情况下将您的图像二进制数据转换为 utf8 字符串。这就是文件大小大于实际大小的原因。尝试传递 encoding:null
以将 body
保留为缓冲区:
request.get({encoding:null, uri: flickrPhotoUrl}, function(error, response, body){
...
})
更新:
我认为您还可以在 Body
参数中传递可读流。对于大文件,这比上面更快。
var stream = request.get(flickrPhotoUrl)
s3.upload({
Body: stream,
Bucket: 'my-uploads',
Key: 'photo.jpg',
}
我正在尝试使用 request.js 将文件上传到 s3,但上传后文件数据似乎不正确。我应该改用响应对象的数据 属性 吗?
var flickrPhotoUrl = 'http://c1.staticflickr.com/3/2207/2305523141_1f98981685_z.jpg?zz=1';
request.get(flickrPhotoUrl, function(error, response, body){
if (body) {
s3.upload({
Body: body,
Bucket: 'my-uploads',
Key: 'photo.jpg',
}, function (err) {
done(err);
});
}
else
{
done('no response');
}
});
上传后从s3中抓取文件时,无法识别图像,而且似乎是原来的两倍大。
request
默认情况下将您的图像二进制数据转换为 utf8 字符串。这就是文件大小大于实际大小的原因。尝试传递 encoding:null
以将 body
保留为缓冲区:
request.get({encoding:null, uri: flickrPhotoUrl}, function(error, response, body){
...
})
更新:
我认为您还可以在 Body
参数中传递可读流。对于大文件,这比上面更快。
var stream = request.get(flickrPhotoUrl)
s3.upload({
Body: stream,
Bucket: 'my-uploads',
Key: 'photo.jpg',
}