首页 > 其他分享 >Compression Stream API

Compression Stream API

时间:2024-04-28 22:02:02浏览次数:26  
标签:const Compression Stream uploadFile API blob file gzip

使用 gzip 或者默认格式压缩和解压缩数据


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Compression Stream API</title>
  </head>
  <body>
    <strong>Compression Stream API</strong>
    <hr />
    <input type="file" class="file" />
    <button type="button" class="btn-compress">压缩文件</button>
    <button type="button" class="btn-decompress">文件解压</button>

    <script>
      // Compression Stream API
      // 使用 gzip 或者默认格式压缩和解压缩数据

      const btnCompress = document.querySelector('.btn-compress');
      const btnDecompress = document.querySelector('.btn-decompress');

      btnDecompress.addEventListener('click', () => {
        const uploadFile = document.querySelector('.file').files[0];

        if (!uploadFile) return;

        decompessFile(uploadFile);
      });

      /**
       * 解压文件
       * @param {File} file 文件对象
       */
      async function decompessFile(file) {
        // 创建 gzip 解压流
        const decompressStream = new DecompressionStream('gzip');
        // 创建文件读取流
        const readStream = await file.stream();

        // 解压文件并写入解压流
        const decompressdReadStream = readStream.pipeThrough(decompressStream);
        // console.log("decompressdReadStream => ", decompressdReadStream)

        const blob = await new Response(decompressdReadStream, {
          headers: { 'Content-Type': 'application/javascript;charset=utf-8' },
        }).blob();
        console.log('blob => ', blob);

        const url = URL.createObjectURL(blob);
        open(url);
      }

      btnCompress.addEventListener('click', () => {
        const uploadFile = document.querySelector('.file').files[0];

        if (!uploadFile) return;

        compessFile(uploadFile);
      });

      /**
       * 压缩文件
       * @param {File} file 文件对象
       */
      async function compessFile(file) {
        // 创建 gzip 压缩流
        const compressStream = new CompressionStream('gzip');
        // 创建文件读取流
        const readStream = await file.stream();

        // 压缩文件并写入压缩流
        const compressdReadStream = readStream.pipeThrough(compressStream);
        // console.log("compressdReadStream => ", compressdReadStream)

        const blob = await new Response(compressdReadStream, {
          headers: { 'Content-Type': 'application/gzip' },
        }).blob();
        console.log('blob => ', blob);

        const url = URL.createObjectURL(blob);
        open(url);
      }
    </script>
  </body>
</html>

标签:const,Compression,Stream,uploadFile,API,blob,file,gzip
From: https://www.cnblogs.com/chlai/p/18164585

相关文章

  • Cookie Store API
    CookieStoreAPI获取和设置cookie的信息无法获取HttpOnly标记的cookieexpires为null时,表示会话结束时过期domain只有在domain为当前域名的主域名时才显示(不包含子域名),否则为null.<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/>......
  • OPENAI API应用文档
    相关链接:https://platform.openai.com/docs/introduction1、简介OpenAIAPI几乎可以应用于任何任务。我们提供一系列具有不同功能和价位的模型,并且能够微调定制模型。api-reference:https://platform.openai.com/docs/api-reference/introduction1.1、关键概念1.1.1、Textg......
  • 开源相机管理库Aravis例程学习(五)——camera-api
    目录简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL简介本文针对官方例程中的:03-camera-api做简单的讲解。并介绍其中调用的arv_camera_get_region,arv_camera_get_pixel_format_as......
  • idea插件之apifox自动化测试
    /***测试apifox插件自动化读取*/@RestController@RequestMapping("/api")publicclassSwaggerApiFoxController{/***这是一个测试方法*@return*/@RequestMapping("/test")publicStringtest(){return"test";}}1......
  • Spring Boot 编写 API 的 10条最佳实践
    10个最佳实践,让您像专业人士一样编写SpringBootAPI,并结合编码示例和解释:1.RESTfulAPI设计原则:清晰一致的资源命名:使用准确反映API管理的资源的名词(例如,/products、/users)。@GetMapping("/products/{id}")publicResponseEntity<Product>getProductById(@PathVaria......
  • blender python api 将指定的顶点组(water)转换为颜色属性water_colors
    1.选中物体,进入权重绘制模式2.代码:importbpy#获取当前活动的物体obj=bpy.context.object#确保物体是网格类型ifobj.type!='MESH':print("当前激活的对象不是网格类型。")#exit()#使用exit()来提前退出脚本#获取名为“water”的顶点组vertex_gro......
  • blender python api 获取所有顶点组并将各自的顶点组转换为对应的颜色属性
    1.选中物体,进入权重绘制模式2.代码importbpy#获取当前活动的物体obj=bpy.context.object#确保物体是网格类型ifobj.type!='MESH':print("当前激活的对象不是网格类型。")#exit()#遍历所有顶点组forvg_nameinobj.vertex_groups.keys():#获......
  • streamlit用法
    importos.pathimportstreamlitasstimportpandasaspdimportnumpyasnp"""2.1显示标题st.title():用于创建页面的主要标题,通常是最大和最显眼的标题。它是在应用的顶部设置的,并且在整个页面中通常只使用一次,用于表示应用的主题或总体内容。st.header():用于创建一......
  • 大小写相关API(tolower, toupper, islower, isupper)
    1.定义位于头文件中1.1tolowertolower函数用于将字符转换为小写形式,如果参数ch是大写字母,则返回对应的小写字母;否则返回原始字符。inttolower(intch);1.2touppertoupper函数用于将字符转换为大写形式,如果参数ch是小写字母,则返回对应的大写字母;否则返回原始......
  • Go的Gin框架中使用Cgo调用Python的CApi调用Python代码
    在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库packagecpython//#cgoCFLAGS:-I"Q:/Sill-/anaconda/envs/poetry/include"//#cgoLDFLAGS:-L"Q:/Sill-/anaconda/envs/poetry/libs"-lpython311//#include<Python.h>imp......