nodejs bufferはstreamを回してgzibを圧縮します.

4245 ワード

nodejs
これらはnodejsのバックエンドサービスに使われています.ファイルアップロードの圧縮の問題です.
//        
import fs from "fs"
import zlib from "zlib"
import stream from "stream"
var Duplex = stream.Duplex;//    stream       buffer    
function bufferToStream(buffer) {
     //buffer Stream(        )
    let stream = new Duplex();
    stream.push(buffer);
    stream.push(null);
    return stream;
}
//        
//b       buffer,  nowUrl                 
//name         (     nowUrl name    )
function gzibFile(b,nowUrl,name){
     //         
	//         Gzip,     gzib  
    const gzib = zlib.createGzip();//gzib     (                )
    var oringFile = bufferToStream(b);
    var out = fs.createWriteStream('./'+nowUrl+name+'.gz');
    oringFile.pipe(gzib).pipe(out);//       './'+nowUrl+name+'.gz'  
}