JAVA使用阿里云Serverless 函数计算将OSS文件打包成Zip批量下载
程序开发
2023-09-05 22:40:20
批量下载OSS文件的几种方法
-
单个文件依次下载
阿里云OSS中批量下载文件使用的就是这种单个文件依次下载的方法,下载时会弹出提示,体验不是很好,也无法下载文件夹保持文件目录结构
-
将OSS文件下载到自己服务器中,然后自己生成一个Zip文件,完成批量下载
这种方法的缺点 下载比较慢、如果文件过多会消耗服务器CPU资源和带宽
- 使用阿里云函数计算打包OSS文件下载
阿里云函数计算官方Demo中有一个python的例子,可惜python用的不多,所以使用Java实现一个类似的功能
使用JAVA 打包OSS文件
- 创建Maven项目,添加阿里云函数计算依赖
com.aliyun.fc.runtime fc-java-core 1.4.0 com.aliyun.fc.runtime fc-java-common 2.2.2 commons-io commons-io 2.11.0
zip-oss org.apache.maven.plugins maven-dependency-plugin copy-dependencies prepare-package copy-dependencies ${project.build.directory}/classes/lib runtime
- 实现Http触发接口
package example;import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.Credentials;
import com.aliyun.fc.runtime.HttpRequestHandler;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.OSSObject;
import org.apache.commons.io.IOUtils;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class App implements HttpRequestHandler {String endpoint = "oss-cn-hangzhou.aliyuncs.com";public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context)throws IOException {String bucket = request.getParameter("bucket");String objectKey= request.getParameter("objectKey");Credentials creds = context.getExecutionCredentials();OSSClient client = new OSSClient(endpoint, creds.getAccessKeyId(), creds.getAccessKeySecret(), creds.getSecurityToken());response.setContentType("application/x-zip-compressed");ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());String [] objectKeys=objectKey.split(",");for (String key : objectKeys) {OSSObject ossObject = client.getObject(bucket, key);ZipEntry zipEntry = new ZipEntry(key);zipOutputStream.putNextEntry(zipEntry);IOUtils.copy(ossObject.getObjectContent(), zipOutputStream);ossObject.close();}zipOutputStream.closeEntry();zipOutputStream.finish();}
}
3.打包工程
mvn clean package
将Jar包部署到阿里云函数计算
1.新建函数
2.部署jar包
3.创建Http触发器
4.测试下载
浏览器访问触发HTTP地址,增加bucket参数和要下载的文件名即可打包下载OSS文件了
http://XXX.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/app_test.LATEST/java_zhaochao/?bucket=XXX-public&objectKey=1.jpg,1.mp4
标签:
上一篇:
SpringCloud整合Swagger3
下一篇:
相关文章
-
无相关信息