簡體   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