JavaScript APIを利用したDeflate圧縮と展開 CompressionStream DecompressionStream

zip(pkzip)やgzipの圧縮展開がJavaScript(ブラウザ)のAPIに用意されているようなので使ってみました。

//---------------------------------------
// deflate展開 zip(pkzip)
export async function decompressPkZipDeflate(blob : Blob){
    let decomp = new DecompressionStream("deflate-raw");
    let strm = blob.stream().pipeThrough(decomp);
    let buffs : Uint8Array[] = [];
    let strmReader = strm.getReader();
    while(1){
        let resp = await strmReader.read();
        let chunk = resp.value;
        if(chunk instanceof Uint8Array){
            buffs.push(chunk);
        }
        if(resp.done)break;
    }
    return new Blob(buffs);
}

//---------------------------------------
// deflate圧縮 zip(pkzip)
export async function compressPkZipDeflate(blob : Blob){
    let comp = new CompressionStream("deflate-raw");
    let strm = blob.stream().pipeThrough(comp);
    let buffs : Uint8Array[] = [];
    let strmReader = strm.getReader();
    while(1){
        let resp = await strmReader.read();
        let chunk = resp.value;
        if(chunk instanceof Uint8Array){
            buffs.push(chunk);
        }
        if(resp.done)break;
    }
   return new Blob(buffs);
}


いいなと思ったら応援しよう!

zerogram
この記事が役に立ったという方は、サポートお願いします。今後の製作の励みになります。