添加依赖
<!-- OSS SDK 相关依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
<!--apache comment tools-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!--提供文件上传下载-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
配置
//仓库名称
public static final String BUCKET_NAME = "********";
//地域节点
public static final String END_POINT = "oss-cn-****.aliyuncs.com";
//AccessKey ID
public static final String AccessKey_ID = "LTAI4FyfTFY**********";
//Access Key Secret
public static final String AccessKey_Secret = "gjmIqTd4S**********";
//仓库中的某个文件夹
public static final String FILE_HOST = "test";
当然做这一切的前提是你得有阿里云OSS云存储,他会给你AccessKey_ID
和AccessKey_Secret
,这个最好记录在本地!
构建工具类
OSS存储工具
OssManagerUtil
/**
* @author 朝花不迟暮
* @version 1.0
* @date 2020/10/28 14:14
*/
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.ObjectMetadata;
import com.oss.demo.config.AliyunOSSConfigConstant;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 阿里Oss对象存储工具类
*/
public class OssManagerUtil {
private static String endpoint = AliyunOSSConfigConstant.END_POINT;
private static String accessKeyId = AliyunOSSConfigConstant.AccessKey_ID;
private static String accessKeySecret = AliyunOSSConfigConstant.AccessKey_Secret;
private static String bucket = AliyunOSSConfigConstant.BUCKET_NAME;
private static OSS client;
static {
client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
/**
* 上传图片
*
* @param fileName 图片名称,图片名称包括文件夹名称和“/”
* @param length 图片大小
* @param content 输入流
*/
public static String uploadImage(String fileName, long length, InputStream content) {
uploadBucketImage(bucket, fileName, length, content);
return "https://" + bucket + "." + endpoint + "/" + fileName;
}
/**
* 上传文件
*
* @param bucket 存储空间名
* @param fileName 文件名(包括文件夹名称和“/”)
* @param length 流的长度
* @param content 输入流
*/
public static void uploadBucketImage(String bucket, String fileName, long length, InputStream content) {
// 创建上传Object的Metadata
ObjectMetadata meta = new ObjectMetadata();
// 必须设置ContentLength
meta.setContentLength(length);
// 上传Object.
client.putObject(bucket, fileName, content, meta);
}
/**
* 删除文件
*
* @param fileName 文件名称,图片名称包括文件夹名称和“/”
*/
public static boolean delShopImage(String fileName) {
//判断文件是否存在
boolean exist = client.doesObjectExist(bucket, fileName);
//文件不存在删除失败
if (!exist) {
return false;
}
//执行删除
client.deleteObject(bucket, fileName);
return true;
}
/**
* 获得上传文件后url链接
* 这个方法我没有看出作用!
* @param fileName 文件名(包括文件夹名称和“/”)
* @return
*/
public static String getUrl(String fileName) {
// 设置URL过期时间为10年 3600l* 1000*24*365*10
Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);
// 生成URL
URL url = client.generatePresignedUrl(bucket, fileName, expiration);
if (url != null) {
return url.toString();
}
return null;
}
/**
* 创建存储空间
*
* @param bucketName 新建存储空间默认为标准存储类型,私有权限。
* @return
*/
public static void crateBucket(String bucketName) {
// 新建存储空间默认为标准存储类型,私有权限。
client.createBucket(bucketName);
}
/**
* @Description: 获取图片链接
* @Param:
* @return:
* @Author: 朝花不迟暮
* @Date: 2020/10/28
*/
public static List<?> getPic(){
ObjectListing objectListing = client.listObjects(bucket);
List<OSSObjectSummary> list = objectListing.getObjectSummaries();
List<Object> objects = new ArrayList<>();
for (OSSObjectSummary summary : list)
{
System.out.println("https://coderxy.top/" + summary.getKey());
objects.add("https://coderxy.top/" + summary.getKey());
}
//list.forEach(System.out::println);
client.shutdown();
return objects;
}
}
和原作者的差别就在最后那个方法,各位可以按照自己的实际情况去选择,我这是写了个获取oss上所有key加域名的一种访问路径放在集合里!当然AliyunOSSConfigConstant
只是引用常量而已,你们换成自己的实际参数就可以了!