当前位置: 首页 > news >正文

基于java的 aws s3文件上传

aws s3 文件上传代码

首先,确保您已经在AWS上创建了一个S3存储桶,并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。

接下来,需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。以下是一个Maven的示例依赖项:

<dependencies><dependency><groupId>software.amazon.awssdk</groupId><artifactId>s3</artifactId><version>2.17.4</version></dependency>
</dependencies>

示例代码:

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.*;import java.io.File;
import java.nio.file.Paths;public class S3Uploader {public static void main(String[] args) {// 设置AWS区域和凭据提供程序Region region = Region.US_EAST_1;DefaultCredentialsProvider credentialsProvider = DefaultCredentialsProvider.create();// 创建S3客户端S3Client s3Client = S3Client.builder().region(region).credentialsProvider(credentialsProvider).build();// 指定要上传的文件和目标存储桶String bucketName = "your-bucket-name";String objectKey = "your-object-key";File file = new File("path/to/your/file");// 创建上传请求PutObjectRequest putObjectRequest = PutObjectRequest.builder().bucket(bucketName).key(objectKey).build();// 设置文件元数据ObjectMetadata metadata = ObjectMetadata.builder().contentType("application/octet-stream").build();putObjectRequest = putObjectRequest.toBuilder().metadata(metadata).build();// 执行上传操作PutObjectResponse putObjectResponse = s3Client.putObject(putObjectRequest, Paths.get(file.getAbsolutePath()));// 打印上传结果System.out.println("文件上传成功,ETag: " + putObjectResponse.eTag());// 设置文件访问权限s3Client.putObjectAcl(PutObjectAclRequest.builder().bucket(bucketName).key(objectKey).acl(ObjectCannedACL.PUBLIC_READ).build());// 获取文件URLString fileUrl = s3Client.utilities().getUrl(GetUrlRequest.builder().bucket(bucketName).key(objectKey).build()).toExternalForm();// 打印文件URLSystem.out.println("文件URL: " + fileUrl);}
}

在上述代码中,需要将 your-bucket-name 替换为自己的S3存储桶名称, your-object-key 替换为想要为上传文件指定的对象键, path/to/your/file 替换为要上传的文件的路径。

代码示例中还包括了设置文件元数据、设置文件访问权限以及获取文件URL的步骤。这些步骤可以帮助您更好地控制上传文件的属性和访问权限。

相关文章:

  • DNS域名解析以及操作流程
  • 力扣 | 509. Fibonacci
  • Springboot开发的大学生宿舍共享厨房系统宿舍自习室宿舍洗衣房系统寝室系统技术文档论文功能部分
  • MySQL连续案例续集
  • Arduino开发实例-AS608光学指纹传感器驱动
  • ElasticSearch概述+SpringBoot 集成 ES
  • flutter使用get库管理路由,并设页面跳转动画和常见动画
  • 了解JavaScript 加密、混淆和生成签名
  • 逼格满满,推荐一个高效测试用例工具:XMind2TestCase !
  • 详解FreeRTOS:内存管理(高级篇—8)
  • 设计模式—— 单例设计模式
  • leetcode 动态规划(单词拆分)
  • 面向对象的三大特性
  • Kali安装Xrdp结合内网穿透实现无公网ip远程访问系统桌面
  • 单例模式的八种写法、单例和并发的关系
  • canvas绘制圆角头像
  • co模块的前端实现
  • HTTP--网络协议分层,http历史(二)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Redux 中间件分析
  • select2 取值 遍历 设置默认值
  • 测试开发系类之接口自动化测试
  • 搭建gitbook 和 访问权限认证
  • 翻译:Hystrix - How To Use
  • 分布式事物理论与实践
  • 汉诺塔算法
  • 普通函数和构造函数的区别
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何使用 JavaScript 解析 URL
  • 使用Swoole加速Laravel(正式环境中)
  • 我的面试准备过程--容器(更新中)
  • 想写好前端,先练好内功
  • 学习JavaScript数据结构与算法 — 树
  • 赢得Docker挑战最佳实践
  • 2017年360最后一道编程题
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #android不同版本废弃api,新api。
  • #include<初见C语言之指针(5)>
  • #includecmath
  • #pragam once 和 #ifndef 预编译头
  • #QT(串口助手-界面)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (0)Nginx 功能特性
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C语言)球球大作战
  • (javascript)再说document.body.scrollTop的使用问题
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)Google的Objective-C编码规范
  • (转)linux下的时间函数使用
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .Family_物联网
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution