前言
前两天根据阿里云的文档和开源Python代码实现了OSS文件压缩下载,但是实现的方式是压缩存储在阿里云OSS上并返回302重定向OSS链接。
这样做优点是快捷简单,但会导致每次请求都会产生一个多余的文件占用OSS空间,并且大量文件碎片管理起来也有问题(目前可以通过统一文件命名并设置生命周期的方式自动删除),并且压缩的效率并不高。
具体可见: 阿里云使用云函数实现打包下载OSS文件
重新实现
目前自己通过Nodejs重新实现了这个功能,在文件打包后直接返回打包后的数据流。
不压盘存储不占用数据存储空间,并且压缩率有了质的提升,一般文件都能压缩到一半大小左右。
目前已开源,可见:moke8/ali-fun-oss-zip
使用方法
- 下载代码包
<code> git clone https://github.com/moke8/ali-fun-oss-zip.git
- 安装依赖
<code> npm install
- 将index.js中client信息改为自己的阿里云key和secret
部署方法
第一种:使用Funcraft
如果你未安装可以安装下面顺序安装。
- 安装Funcraft
<code> npm install @alicloud/fun -g
- 配置
<code> fun config
- 本地调试
<code> fun local start
- 发布到阿里云
<code> fun deploy
第二种:直接上传
也可以直接打包压缩上传到阿里云云函数的函数空间中
调用方法
POST传参
{
"region": "cn-shanghai", // 文件所在区域,默认为当前函数所在区域
"bucket": "bullet001", // 文件所在的bucket
"source-files": [
"bill/pay/1.00_S865054.pdf"
] // OSS路径文件列表
}
请问这个可以用于小程序麽?我想小程序上传照片,然后打包自己目录下的文件下载