oss对zip包中的所有文件进行上传并且对每个获取文件md5值

2024-05-25 19:18

本文主要是介绍oss对zip包中的所有文件进行上传并且对每个获取文件md5值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 上传zip包方法

 public static List<String> uploadZipMultiFile(MultipartFile fileData) {List<String> urls = new ArrayList<>();ZipInputStream zip = new ZipInputStream(fileData.getInputStream(), Charset.forName("UTF-8"));ZipEntry fileEntry;String env = "resource/";while ((fileEntry = zip.getNextEntry()) != null) {if (!fileEntry.isDirectory()) {String filename = fileEntry.getName();String suffix = StringUtils.substringAfterLast(filename, ".");filename = env + filename;@Cleanup ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();byte[] byte_s=new byte[1024];int num;while((num=zip.read(byte_s,0,byte_s.length))>-1) {//通过read方法来读取文件内容byteArrayOutputStream.write(byte_s, 0, num);}byte[] byte_s_=byteArrayOutputStream.toByteArray();String md5 = DigestUtils.md5Hex(byte_s_);createFolder(env);uploadFile(filename,byte_s_);filename= filename+"?md5="+md5;if (StringUtils.contains(contentType(suffix), "image")) {urls.add(OSS_IMAGE_HOST + filename);} else {urls.add( OSS_HOST + filename);}}}zip.close();return urls;}/*** @param key* @param content 文件内容* @throws Exception*/private static void uploadFile(String key, byte[] content) throws Exception {ObjectMetadata objectMeta = new ObjectMetadata();objectMeta.setContentLength(content.length);@Cleanup InputStream input = new ByteArrayInputStream(content);client.putObject(OSS_BUCKET, key, input, objectMeta);}/*** 创建目录** @param path 目录结构,这个有要求必须是 "xxx/xxx/" 以目录名开头,/结尾* @throws IOException*/private static void createFolder(String path) throws IOException {if (folderCache.containsKey(path)) return;ObjectMetadata objectMeta = new ObjectMetadata();byte[] buffer = new byte[0];objectMeta.setContentLength(0);try (ByteArrayInputStream in = new ByteArrayInputStream(buffer)) {client.putObject(OSS_BUCKET, path, in, objectMeta);}folderCache.put(path, true);}

 

这篇关于oss对zip包中的所有文件进行上传并且对每个获取文件md5值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002394

相关文章

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操