2017-12-21 6 views
1

image/pngヘッダーの画像としてbase64文字列を提供しようとしています。ヘッダーは正しく設定されていますが、画像が表示されていない場合は、空白の画面が表示されます。ここでのコードは次のとおりです。Nodejsはbase64をImageとして返します

request('someCustomLink', function (error, response, body) { 
// someCustomLink gives the base64 string 
     var img = new Buffer(body, 'base64'); 
     res.writeHead(200, { 
      'Content-Type': 'image/png', 
      'Content-Length': img.length 
     }); 
     res.end(img);   
}); 

thisは、私は、このソリューションに到着し、その後のリンクです。

ご協力いただければ幸いです。ここでEDIT

Accept-Ranges:bytes 
Content-Length:128778 
Content-Type:image-jpeg 
Date:Thu, 21 Dec 2017 06:03:52 GMT 
ETag:"edc04d469779108860478b361b7427d7" 
Last-Modified:Mon, 11 Dec 2017 08:54:32 GMT 
Server:AmazonS3 
x-amz-id-2:QlR39g0vC5CeOo6fdKzX9uFB+uiOtj61c0LKW2rQLcCPWllcKyfbpg93Yido+vZfzMzB3lmhbNQ= 
x-amz-request-id:3EC77634D9A05371 

これは取得REQ

var request = require('request').defaults({ encoding: null }); 

app.get('/thumb/:thumbLink', function(req, res) { 


     request('https://s3.amazonaws.com/my-trybucket/projectImages/'+req.params.thumbLink, function (error, response, body) { 
      //console.log('error:', error); // Print the error if one occurred 
      //console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received 
      //console.log('body:', body); // Print the HTML for the Google homepage. 
      var img = new Buffer(body, 'base64'); 
      res.writeHead(200, { 
       'Content-Type': 'image/png' 

      }); 
      res.end(img); 
     }); 
    }); 

-Thanks

+0

なぜbase64 PNGを提供していますか?それは珍しいことです。 – Ryan

+0

私はbase64 PNGとしてイメージを含むs3バケットを持っています。 – user287332

+0

'body'をロギングしましたか? – Ryan

答えて

1
である(それが問題BETRを理解するのに役立つかもしれない)私のsomeCustomLinkからのレスポンスヘッダです

あなたの回答にはdata:image/png;base64,が含まれています。 Bufferを作成する前にこれを削除してください。下記の例を参照

request('https://s3.amazonaws.com/my-trybucket/projectImages/e31492f7314837a22a64395eee7cedfd', function(error, response, body) { 
    var img = new Buffer(body.split(',')[1], 'base64'); 
    res.writeHead(200, { 
     'Content-Type': 'image/png', 
     'Content-Length': img.length 
    }); 
    res.end(img); 
}) 
+0

しかし、このGoogleロゴはbase64ではありません。私は画像に変換する必要があるcustomLink提供のbase64文字列を持っています。あなたが結果が同じものであると私が見ているすべてのものが空白の画像であると言うように要求を初期化しようとしました – user287332

+0

機能的な例を投稿できますか? –

+0

に機能が追加されました。それをシステムに複製することができます。上記のコメントにリンクを見つける – user287332

関連する問題