阿里云OSS追加上传(java)

简介: 需求:不断接收数据,将数据写入文件存放到OSS 方案: 1、接收到文件后写到本地,定期或实时覆盖上传到OSS 2、OSS追加上传 只贴2代码: 标红处注意,如不声明则写入OSS中文会乱码。

场景描述:不断接收数据,将数据写入文件存放到OSS

方案:

1、接收到文件后写到本地,定期或实时覆盖上传到OSS

2、OSS追加上传

只贴2代码:



public boolean writeFile(String content) {

		// 创建OSSClient实例

		OSSClient ossClient = new OSSClient(ossConfig.getEndPoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());



		try {

			// 判断bucket是否存在

			if (!ossClient.doesBucketExist(ossConfig.getBucketName())) {

				ossClient.createBucket(ossConfig.getBucketName());// 创建Bucket

				logger.info("Bucket {} 不存在,已创建。", ossConfig.getBucketName());

			}



			// 判断当日目录是否存在

			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");

			Date today = new Date();

			String todayDirectoryName = ossConfig.getDirectory() + simpleDateFormat.format(today) + "/";

			if (!ossClient.doesObjectExist(ossConfig.getBucketName(), todayDirectoryName)) {

				OSSUtil.createDirectory(ossClient, ossConfig.getBucketName(), todayDirectoryName);

				logger.info("目录 {} 不存在,已创建。", todayDirectoryName);

			}



			InputStream inputStream = new ByteArrayInputStream(content.getBytes());



			// 按规则生成文件名

			String deviceFileName = todayDirectoryName + 文件名 + ".txt";



			// 从OSS取文件,读其大小

			Long position = OSSUtil.getRemoteFileSize(ossClient, ossConfig.getBucketName(), deviceFileName);

			logger.debug("{} 写入位置 {}", deviceFileName, position);



			// 创建上传Object的Metadata,如不声明则写入OSS中文会乱码

			ObjectMetadata meta = new ObjectMetadata();

			meta.setContentType("text/plain; charset=utf-8");



			ossClient.appendObject(new AppendObjectRequest(ossConfig.getBucketName(), deviceFileName, inputStream, meta).withPosition(position));



			return true;

		} catch (Exception e) {

			logger.error("OSS文件写入异常", e);

			return false;

		} finally {

			ossClient.shutdown();

		}

	}

~~~~

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
目录
相关文章
|
10月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
Arthas 监控 Java
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
本文介绍了阿里云 Java Agent 4.x 版本在基于 OTel Java Agent 二次开发过程中的实践与思考,并重点从功能、性能、稳定性、兼容性四个方面介绍了所做的工作。同时也介绍了阿里云可观测团队积极参与开源建设取得的丰厚成果。
1646 133
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
机器学习/深度学习 人工智能 NoSQL
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。
2606 3
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
|
Arthas 监控 Java
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
763 0
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
446 0
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
1013 1