NodeJs实现OSS文件批量压缩并下载(通过数据流,不压盘)

/ 1评 / 1

前言

前两天根据阿里云的文档和开源Python代码实现了OSS文件压缩下载,但是实现的方式是压缩存储在阿里云OSS上并返回302重定向OSS链接。

这样做优点是快捷简单,但会导致每次请求都会产生一个多余的文件占用OSS空间,并且大量文件碎片管理起来也有问题(目前可以通过统一文件命名并设置生命周期的方式自动删除),并且压缩的效率并不高。

具体可见: 阿里云使用云函数实现打包下载OSS文件

重新实现

目前自己通过Nodejs重新实现了这个功能,在文件打包后直接返回打包后的数据流。

不压盘存储不占用数据存储空间,并且压缩率有了质的提升,一般文件都能压缩到一半大小左右。

目前已开源,可见:moke8/ali-fun-oss-zip

使用方法

  1. 下载代码包 <code> git clone https://github.com/moke8/ali-fun-oss-zip.git
  2. 安装依赖 <code> npm install
  3. 将index.js中client信息改为自己的阿里云key和secret

部署方法

第一种:使用Funcraft

如果你未安装可以安装下面顺序安装。

  1. 安装Funcraft <code> npm install @alicloud/fun -g
  2. 配置 <code> fun config
  3. 本地调试 <code> fun local start
  4. 发布到阿里云 <code> fun deploy

第二种:直接上传

也可以直接打包压缩上传到阿里云云函数的函数空间中

调用方法

POST传参

{
    "region": "cn-shanghai",  // 文件所在区域,默认为当前函数所在区域
    "bucket": "bullet001", // 文件所在的bucket
    "source-files": [
        "bill/pay/1.00_S865054.pdf"
    ] // OSS路径文件列表
}
  1. hufei说道:

    请问这个可以用于小程序麽?我想小程序上传照片,然后打包自己目录下的文件下载

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注