Node.js Base64 Encoding和Decoding

来源:http://www.cnblogs.com/jaxu/archive/2016/11/21/6087109.html
-Advertisement-
Play Games

如何在Node.js中encode一個字元串呢?是否也像在PHP中使用base64_encode()一樣簡單? 在Node.js中有許多encoding字元串的方法,而不用像在JavaScript中那樣定義各種不同的全局函數。下麵是如何在Node.js中將一個普通字元串encode成Base64格式 ...


  如何在Node.js中encode一個字元串呢?是否也像在PHP中使用base64_encode()一樣簡單?

  在Node.js中有許多encoding字元串的方法,而不用像在JavaScript中那樣定義各種不同的全局函數。下麵是如何在Node.js中將一個普通字元串encode成Base64格式的代碼:

var b = new Buffer('JavaScript');
var s = b.toString('base64');
// SmF2YVNjcmlwdA==

  下麵是decode base64字元串的代碼:

var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString();
// JavaScript

  如果你想瞭解上面代碼的實現細節,請接著往下看。

  構造函數new Buffer()的第一個參數可以是一個Number,Array或String。第二個參數為可選參數,用來表示encode的類型,可以是AscII, Utf8, Ucs2, Base64, Binary, 或Hex。預設值是Utf8。

  通過第二個參數,告訴程式給定的字元串是以哪種特定格式被encode的。註意上面decode的例子中我們傳入的參數。

  我們通過toString()方法將encode的字元串轉換成其它格式,預設為Utf8。指定不同的參數,可以轉換成我們想要的格式。例如我們可以將Base64之後的字元串轉換成Hex格式:

var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString('hex');
// 4a617661536372697074

  然後通過下麵的方式將其decode成人類能看懂的字元串:

var b = new Buffer('4a617661536372697074', 'hex')
var s = b.toString('utf8');
// JavaScript

  一旦掌握了基本的Buffer和encode,我們就可以通過Node.js的File module將文件encode成Base64字元串。

var fs = require('fs');

// function to encode file data to base64 encoded string
function base64_encode(file) {
    // read binary data
    var bitmap = fs.readFileSync(file);
    // convert binary data to base64 encoded string
    return new Buffer(bitmap).toString('base64');
}

// function to create file from base64 encoded string
function base64_decode(base64str, file) {
    // create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded
    var bitmap = new Buffer(base64str, 'base64');
    // write buffer to file
    fs.writeFileSync(file, bitmap);
    console.log('******** File created from base64 encoded string ********');
}

// convert image to base64 encoded string
var base64str = base64_encode('kitten.jpg');
console.log(base64str);
// convert base64 string back to image 
base64_decode(base64str, 'copy.jpg');

PS:Utf8是AscII的超集。如果你只能使用標準英文鍵盤上的字元,則可以使用AscII編碼;但是如果你正在處理其它“外來”字元或符號,例如⌘, こんにちは, Üdvözöljük等,請使用Utf。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • th定義表格內的表頭單元格。 html 表單中有兩種類型的單元格: 1:表頭單元格 - 包含表頭信息(由 th 元素創建) 2:標準單元格 - 包含數據(由 td 元素創建) 註:th 元素內部的文本通常會呈現為居中的粗體文本,而 td 元素內的文本通常是左對齊的普通文本。 如下這個示例: 最後輸出 ...
  • 很實用的一款liMarquee演示12種不同的無縫滾動效果 線上預覽 下載地址 實例代碼 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>liMarquee演示12種不同的無縫滾動效果-預設效果_suc ...
  • 本系列主要總結Css3一些新特性的認識,來源於《css揭秘》書。 一、半透明邊框 css3最好用hsla,而不是rgba,hsla是:h:顏色值(0~360);s:飽合度(0%~100%);l:亮度(0%~100%);a:透明度(0~1) background-clip:裁剪背景顏色,預設為bord ...
  • 筆記說明 《CSS3實戰手冊第3版(影印版)》可以消除Web設計工作的痛苦,並且帶給你:HTML——重新入門。如果你是HTML新手,你會學到如何以CSS友好的方式進行基本頁面構造。若你是HTML高手,你將學會如何像CSS設計者那樣思考。 全書共18章,五大部分600來頁。 可能是出版方認為本書英文很 ...
  • SASS是什麼 傳統的CSS是一種單純的描述性樣式文件,然而SASS可以對CSS進行預編譯處理。 在SASS源碼中可以使用變數、函數、繼承等動態語言的特性,並且可以編譯成CSS文件。 安裝與使用 安裝 由於sass是ruby寫的,所以想要使用sass就需要安裝ruby環境。然後再使用gem安裝sas ...
  • 好久沒寫博客了,不想廢話,直接欣賞效果! 點擊這裡,查看完美效果! 附完整代碼: <!doctype html> <html> <head> <meta charset="utf-8"> <title>heart nick</title> <style> canvas { position: abs ...
  • 在CSS中,a標簽有4種偽類,分別為: 對其稍有瞭解的前端er都知道,4個偽類是有固定順序的(LVHA),否則很容易出現預期之外的效果。 大部分人,都會用自己的方式,對這個順序死記硬背。 熟記順序,無疑是寫樣式時最快捷的方法,牛人們的記憶方法也是五花八門。 我見過有醬嬸的:lv的包包hao,這倒是實 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...