繁体   English   中英

使用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',
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM