方法一:使用原生OSS上传服务
1.引依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
2.编码
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "外网访问路径";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "子用户id";
String accessKeySecret = "子用户secret";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = new FileInputStream("需要上传的本地文件路径");
// 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
ossClient.putObject("bucket_name", "上传后文件名", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("文件上传成功");
方法二:使用Spring Cloud Alibaba再封装的OSS服务
引依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
引依赖
<!--spring cloud alibaba OSS-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
</dependency>
application.yml中配置(不同版本的SpringCloudAlibaba在此处配置有些区别)
spring:
cloud:
alicloud:
access-key: LTAI4G7LssKGKBNcgycxRT4n
secret-key: N4RhT4jtGKNPMf9CdmcVDb808jReoP
oss:
endpoint: https://oss-cn-beijing.aliyuncs.com
编码
@Autowired
private OSSClient ossClient;
@Test
public void testUpload() throws FileNotFoundException {
//上传文件流
InputStream inputStream = new FileInputStream("需要上传的本地文件路径");
ossClient.putObject("bucket_name", "上传后的文件名", inputStream);
System.out.println("文件上传成功");
}