【问题标题】:How to decode/encode string to base64 in typescript express server如何在打字稿快递服务器中将字符串解码/编码为base64
【发布时间】:2019-11-19 00:01:13
【问题描述】:

我有一个用 typescript 编写的快速服务器。

atob()btoa() 适用于浏览器和 Nodejs。

我们一般用

Buffer.from("some-string").toString('base64') 将字符串编码为 base64。

但是,当我在 TypeScript 中编写代码时,这似乎不起作用。我需要一些帮助。

【问题讨论】:

标签: typescript express tobase64string


【解决方案1】:

请使用btoa 编码字符串

console.log(btoa("abc")); // YWJj

用于atob解码相同的字符串

console.log(atob("YWJj")); // abc

【讨论】:

  • atob() 或 btoa() 由于未定义 btoa 而引发错误。如果您在浏览器上托管它,我想这会起作用。但是,作为 REST 服务器,这可能行不通。
  • 我了解它是否在浏览器中运行的问题。我的解决方案是基于浏览器的,效果非常好。谢谢。
  • @deprecated — 改用 Buffer.from(data, 'base64')。
【解决方案2】:

在节点打字稿中:

const b64 = "SGVsbG8sIFdvcmxkIQ==";
const str = 'Hello, World!'

const decode = (str: string):string => Buffer.from(str, 'base64').toString('binary');
const encode = (str: string):string => Buffer.from(str, 'binary').toString('base64');

test('base64 decode', () => {
  expect(decode(b64)).toEqual(str)
});

test('base64 decode', () => {
  expect(encode(str)).toEqual(b64)
});

test('base64 encode/decode', () => {
  expect(decode(encode(str))).toEqual(str)
});

【讨论】:

    【解决方案3】:

    如果你在前端使用过window.btoa(fileData)

    注意:在收到zerkms 的反馈并阅读了包装代码后,您似乎可以手动完成。但是我必须运行它两次才能工作。
    我也在尝试解码一张大图。

    那么在nodejs服务器上就可以直接使用Buffer了:

    const b64 = "SGVsbG8sIFdvcmxkIQ==";
    const fileDataProcessed = Buffer.from(b64, 'base64').toString('binary')
    const decodedData = Buffer(fileDataProcessed, 'base64')
    
    // This is the code that you can now upload to your s3 bucket, or somewhere else.
    console.log(decodedData);
    

    【讨论】:

    • 确实没有理由使用 3rd 方包。
    • @zerkms 如果你不使用 3rd 方包,你是怎么做的?
    • Buffer.from(b64, 'base64').toString()
    • 你是对的。但是我不得不通过它两次。我会更新我的答案
    • 我真的很困惑——如果你需要一个字符串,你可以使用Buffer.from(b64, 'base64').toString('binary')。如果您需要缓冲区 - 您可以使用Buffer.from(b64, 'base64')const decodedData = Buffer(fileDataProcessed, 'base64') 有什么意义?它会产生垃圾?
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多