修改文件编码格式
在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();
复制代码
查看当前目录,会看到 一张蓝色的图片