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

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显