Nodejs实践 -- Buffer 使用

修改文件编码格式

在Nodejs 中,文件操作和大部分网络操作都默认将数据以Buffer 类型返回。如:

const fs = require('fs')
fs.readFile('./test.txt', function(err, buf){
	console.log(Buffer.isBuffer(buf))  // true
})复制代码


1、将 Buffer 转为字符串

const fs = require('fs')
fs.readFile('./test.txt', function(err, buf){
	// toString 默认转为 utf-8的格式
	console.log(buf.toString())        
    console.log(buf.toString('ascii'))   
    console.log(buf.toString('base64'))
    console.log(buf.toString('utf16le'))     	
})
复制代码


2、创建基本头部验证信息

// 构造请求头:Authorization: Basic <encode_string>  中的 encode_string

let user = {
	uid:'admin',
	pwd:'123456'
}
let encode  = Buffer(user.uid + ':' + user.pwd).toString('base64');
console.log(encode);
复制代码


3、处理data URIs 

1)  把一张图片转为使用base64编码 以 dataURIs 的方式呈现

const fs = require('fs');

function encodeJpegToDataUris() {
    let encoding = 'base64',
        mime = 'image/jpeg';
    let data = fs.readFileSync('./test.jpeg').toString(encoding);
    // 构造 dateUris 格式
    let uri = 'data:' + mime + ';' + encoding + ',' + data;

    console.log(uri);
    return uri;
}

encodeJpegToDataUris();
复制代码


2)   把图片的 dataURIs 形式,保存为 图片文件

const fs = require('fs');

function decodeDataUrisToJpeg(){
	let uri = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACagAwAEAAAAAQAAABMAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIABMAJgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAwICQoJBwwKCQoNDAwOER0TERAQESMZGxUdKiUsKyklKCguNEI4LjE/MigoOk46P0RHSktKLTdRV1FIVkJJSkf/2wBDAQwNDREPESITEyJHMCgwR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/3QAEAAP/2gAMAwEAAhEDEQA/AM7ylGOKdtHpTzikr6Q+O5rjSAKMUpooC4mBRgUtFAj/0KdFFFfSHxqENJS96KAEooooA//Z"
	let data = uri.split(',')[1];
	let buf = Buffer(data,'base64');
	fs.writeFileSync('./test.jpeg', buf)

}

decodeDataUrisToJpeg();
复制代码

查看当前目录,会看到 一张蓝色的图片   




转载于:https://juejin.im/post/5aae004af265da239a5f9663

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值