Nodejs实践 -- Buffer 使用

712 阅读1分钟

修改文件编码格式

在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();

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