.xml引用
<!-- OSS SDK 相关依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.1</version>
</dependency>
.yml配置
# OSS相关配置信息 (OSS官网配置信息)
aliyun:
oss:
endpoint: http://oss-cn-hangzhou.aliyuncs.com # oss对外服务的访问域名
url: https://**.oss-cn-hangzhou.aliyuncs.com/
accessKeyId: *** # 访问身份验证中用到用户标识
accessKeySecret: *** # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
bucketName: **
env: dev
阿里云 OSS 配置信息:
package com.config;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.Serializable;
/**
* @Author FangYN
* @Date 2020/10/9 14:25
* @Description 阿里云 OSS 配置信息
**/
@Data
@Configuration
public class OSSConfig implements Serializable {
private static final long serialVersionUID = -119396871324982279L;
/**
* 阿里云 oss 站点
*/
@Value("${aliyun.oss.endpoint}")
private String endpoint;
/**
* 阿里云 oss 资源访问 url
*/
@Value("${aliyun.oss.url}")
private String url;
/**
* 阿里云 oss 公钥
*/
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
/**
* 阿里云 oss 私钥
*/
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
/**
* 阿里云 oss 文件根目录
*/
@Value("${aliyun.oss.bucketName}")
private String bucketName;
/**
* 环境
*/
@Value("${aliyun.env}")
private String env;
@Bean("oss")
public OSS initOssClient() {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
return ossClient;
}
// /**
// * @param keyName 文件名
// * @return oss获取文件下载路径
// */
// public URL getUrl(String keyName) {
// OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// // 设置URL过期时间为1小时
// Date expiration = new Date(new Date().getTime() + 3600 * 10000);
// // 生成URL
// URL url = client.generatePresignedUrl(bucketName, packApk + keyName, expiration);
// return url;
// }
}
阿里云 oss 上传工具类:
package com.util;
import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.PutObjectResult;
import com.common.util.UUIDUtils;
import com.config.OSSConfig;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
/**
* @Author FangYN
* @Date 2020/10/9 14:24
* @Description 阿里云 oss 上传工具类
**/
public class OSSUtil {
private OSSUtil() {
}
/**
* oss 工具客户端
*/
private volatile static OSSClient ossClient = null;
/**
* 上传文件至阿里云 OSS
* 文件上传成功,返回文件完整访问路径
* 文件上传失败,返回 null
*
* @param ossConfig oss 配置信息
* @param file 待上传文件
* @param fileDir 文件保存目录
* @param fileName 文件重命名(文件后缀需要带)
* @return oss 中的相对文件路径
*/
public static String upload(OSSConfig ossConfig, MultipartFile file, String fileDir, String fileName) throws IOException {
initOSS(ossConfig);
StringBuilder fileUrl = new StringBuilder();
InputStream ins = null;
try {
if (ObjectUtils.isEmpty(fileName)) {
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf('.'));
fileName = System.currentTimeMillis() + "-" + UUIDUtils.getUUID().substring(0, 18) + suffix;
}
if (!fileDir.endsWith("/")) fileDir = fileDir.concat("/");
fileUrl = fileUrl.append(ossConfig.getEnv().concat("/") + fileDir + fileName);
ossClient.setBucketAcl(ossConfig.getBucketName(), CannedAccessControlList.PublicRead);
ins = file.getInputStream();
PutObjectResult result = ossClient.putObject(ossConfig.getBucketName(), fileUrl.toString(), ins);
ins.close();
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (Throwable throwable) {
throwable.printStackTrace();
} finally {
if (ins != null) ins.close();
}
fileUrl = fileUrl.insert(0, ossConfig.getUrl());
return fileUrl.toString();
}
/**
* @param ossConfig oss信息
* @return 初始化 oss 客户端
*/
private static OSSClient initOSS(OSSConfig ossConfig) {
if (ossClient == null) {
synchronized (OSSUtil.class) {
if (ossClient == null) {
ossClient = new OSSClient(ossConfig.getEndpoint(),
new DefaultCredentialProvider(ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret()),
new ClientConfiguration());
}
}
}
return ossClient;
}
/**
* @param keyName 存放路径+文件名
* @return oss获取文件下载路径
*/
public static URL getUrl(String keyName, OSSConfig ossConfig) {
initOSS(ossConfig);
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);// 设置URL过期时间为10年
URL url = ossClient.generatePresignedUrl(ossConfig.getBucketName(), keyName, expiration);// 生成URL
return url;
}
}