// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "" ;
String accessKeySecret = "" ;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创建PutObjectRequest对象。
String content = "Hello OSS";
// 表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
PutObjectRequest putObjectRequest = new PutObjectRequest("" , "" , new ByteArrayInputStream(content.getBytes()));
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上传字符串。
ossClient.putObject(putObjectRequest);
// 关闭OSSClient。
ossClient.shutdown();
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "" ;
String accessKeySecret = "" ;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret);
// 上传Byte数组。
byte[] content = "Hello OSS".getBytes();
ossClient.putObject("" , "" , new ByteArrayInputStream(content));
// 关闭OSSClient。
ossClient.shutdown();
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "" ;
String accessKeySecret = "" ;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传网络流。
InputStream inputStream = new URL("https://www.aliyun.com/").openStream();
ossClient.putObject("" , "" , inputStream);
// 关闭OSSClient。
ossClient.shutdown();
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "" ;
String accessKeySecret = "" ;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = new FileInputStream("" );
ossClient.putObject("" , "" , inputStream);
// 关闭OSSClient。
ossClient.shutdown();
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "" ;
String accessKeySecret = "" ;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest("" , "" , new File("" ));
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上传文件。
ossClient.putObject(putObjectRequest);
// 关闭OSSClient。
ossClient.shutdown();
所需的pom 依赖
<dependency>
<groupId>com.aliyun.ossgroupId>
<artifactId>aliyun-sdk-ossartifactId>
<version>3.6.0version>
dependency>
1、构建属性类
@Data
@RefreshScope
public class OssProperties {
@Value("${plugin.oss.end-point}")
private String endPoint;
@Value("${plugin.oss.access-key-id}")
private String accessKeyId;
@Value("${plugin.oss.access-key-secret}")
private String accessKeySecret;
@Value("${plugin.oss.bucket}")
private String bucket;
@Value("${plugin.oss.host}")
private String host;
}
2、构建dir,使用枚举更合适,可以自行修改
/**
* @author Created by 谭健 on 2019/12/25. 星期三. 10:59.
* © All Rights Reserved.
*
* oss 上传必须使用此类进行路径锁定
*/
public class OssDir {
}
3、上传组件
/**
* @author Created by 谭健 on 2018/12/3. 星期一. 16:32.
* © All Rights Reserved.
*
* oss 上传组件
*/
@Slf4j
public class OssComponent {
private final OssProperties ossProperties;
public OssComponent(OssProperties ossProperties) {
this.ossProperties = ossProperties;
}
/**
* 进行文件上传,支持各种形式的流
*
* @param inputStream 输入流
* @return 返回上传后的对象url 地址
*/
public String simpleUpload(InputStream inputStream, String suffix, String dir) {
if (inputStream == null) {
log.error("通过OSS 流式上传时,输入流为空");
return "";
}
String filename = dir + UUID.randomUUID() + "." + suffix;
this.put(filename, inputStream);
return resourceUrl(filename);
}
/**
* 上传某个链接地址的内容
*/
@SneakyThrows(Exception.class)
public String uploadUrl(String url, String suffix, String dir) {
return simpleUpload(new URL(url).openStream(), suffix, dir);
}
/**
* 构建请求对象
*
* @param filename 文件名
* @param inputStream 流
*/
private PutObjectRequest buildRequest(String filename, InputStream inputStream) {
return new PutObjectRequest(ossProperties.getBucket(), filename, inputStream);
}
/**
* 构建oss 组件
*/
private OSS buildOss() {
return new OSSClientBuilder().build(
ossProperties.getEndPoint(), ossProperties.getAccessKeyId(), ossProperties.getAccessKeySecret());
}
/**
* 设置存储类型与访问权限
*
* @param request 文件请求
*/
private static PutObjectRequest jurisdiction(PutObjectRequest request) {
ObjectMetadata metadata = new ObjectMetadata();
metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
metadata.setObjectAcl(CannedAccessControlList.PublicRead);
request.setMetadata(metadata);
return request;
}
/**
* 获取上传到 oss 后文件的链接
*/
private String resourceUrl(String filename) {
return ossProperties.getHost() + ossProperties.getBucket() + "." + ossProperties.getEndPoint() + "/" + filename;
}
/**
* 把文件传到 oss
*/
private void put(String filename, InputStream inputStream) {
OSS ossClient = this.buildOss();
ossClient.putObject(
jurisdiction(
this.buildRequest(filename, inputStream)
)
);
ossClient.shutdown();
}
@PostConstruct
public void init() {
log.info("oss 组件被加载到项目中");
}
}
4、构建启动器
@Import({
OssComponent.class,
OssProperties.class
})
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface EnableOss {
}