亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 S3 字節數組轉換為 base64

將 S3 字節數組轉換為 base64

江戶川亂折騰 2021-10-14 17:46:47
在谷歌圖表中,要真正擁有不同顏色的條形“組”,您需要使用單獨的列或系列...var data = google.visualization.arrayToDataTable([  ['Range', 'Series 0', 'Series 1'],  ['Today', 1000, 1170],]);但是,在上面的示例中,您會注意到只有一行,所以沒有昨天。為了重現所需的圖表,您首先需要使用樣式角色,以便分別為每個條形著色。您還需要插入空白行以制作“組”...var data = google.visualization.arrayToDataTable([  ['Range', 'Value', {role: 'style', type: 'string'}],  ['Today', 1000, '#3366cc'],  ['Yesterday', 1170, '#dc3912'],  ['', null, null],  ['this week', 7000, '#3366cc'],  ['last week', 9170, '#dc3912'],]);請參閱以下工作片段...google.charts.load('current', {  packages: ['corechart']}).then(function () {  var data = google.visualization.arrayToDataTable([    ['Range', 'Value', {role: 'style', type: 'string'}],    ['Today', 1000, '#3366cc'],    ['Yesterday', 1170, '#dc3912'],    ['', null, null],    ['this week', 7000, '#3366cc'],    ['last week', 9170, '#dc3912'],  ]);  var options = {    legend: {position: 'none'},    title: 'Vehicle Operating Rate'  };  var chart = new google.visualization.BarChart(document.getElementById('chart'));  chart.draw(data, options);});<script src="https://www.gstatic.com/charts/loader.js"></script><div id="chart"></div>在我的 NodeJS 服務器上,我下載了一個需要嵌入到電子郵件中的圖像。我的存儲桶不是公開的,因此僅使用該鏈接是行不通的,因為這不是我想要的針對此問題或項目要求的解決方案。我為此使用了 HTML 電子郵件,內容如下:<p>Embedded image: <img src="data:image/jpeg;charset=utf-8;base64,{{url}}" /></p>所以我從S3下載s3.getObject(                          { Bucket: "mybucket", Key: "mykey" },                          function (error, data) {                            if (error != null) {                              console.log("Errror" + error)                            } else {                              console.log("Loaded " + data.ContentLength + " bytes")然后我試圖將 data.body 轉換為 UTF-8 base 64我想像"data:image/png;base64," + new String(encoder.encode(data.body), "UTF-8")但這似乎不起作用,我正在努力定義編碼器以實現此目的。
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

確保您在data.Body. 我認為data.Body已經是一個緩沖區,您可以按如下方式構造 src URL:


  // Convert Body from a Buffer to a String

    let base64String= data.Body.toString('base64');


    let src = "data:image/jpeg;base64,"+base64String;


查看完整回答
反對 回復 2021-10-14
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

如果您以二進制格式存儲 s3 存儲桶對象,則可以接收它并將其轉換為 base64:


const blobToBase64 = (blob) => {

  const reader = new FileReader()

  reader.readAsDataURL(blob)

  return new Promise((rs, rj) => {

    reader.onloadend = () => {

      rs(reader.result)

    }

    reader.onerror = rj

  })

}


function useImage({s3Link}) {

  const [src, setSrc] = React.useState(null)


  React.useEffect(() => {

    async function query({link}) {

      //link is link to s3 bucket URL link e.g

      // const link = s3.getSignedUrl('getObject', {

      //   Bucket: bucketnamw,

      //   Key: key,

      //   Expires: 30,

      // })


      const r = await fetch(link)

      const blob = await r.blob()

      const base64 = await blobToBase64(blob)

      console.log(`base64!`, base64)

      setSrc(base64)

    }


    if (s3Link) {

      query({link: s3Link})

    }

  }, [s3Link, setSrc])


  return [{src}]

}


查看完整回答
反對 回復 2021-10-14
  • 2 回答
  • 0 關注
  • 328 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號