Compression Streams API 可以使用 gzip 或 deflate(或 deflate-raw)格式压缩和解压缩数据流。
不过目前仅只有 Chrome 和 Safari 支持这个 API。所以我们仍旧需要判断使用。
const isSupport = 'CompressionStream' in windowif (!isSupport) { throw new Error("Your browser doesn't support the CompressionStream API, Please use Chrome or Safari") // 使用其他工具类}
加载并转化文件,保存文件在 浏览器文件操作
// 获取后端文件const readableStream = await fetch('xxxx.pdf').then( (response) => response.body) // gzip 压缩const compressedReadableStream = readableStream.pipeThrough( new CompressionStream('gzip')); // 保存文件压缩文件await fileSave(new Response(compressedReadableStream), { fileName: 'xxxx.zip', extensions: ['.zip'],});
当然也有解压 API。
const decompressedReadableStream = compressedReadableStream.pipeThrough( new DecompressionStream('gzip'));