AliyunUtils
import java.util.ArrayList;
import java.util.List;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ListObjectsRequest;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
public class AliyunUtils {
private static String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
private static String accessKeyId = "<这里是公司的accessKeyId>";
private static String accessKeySecret = "<这里是公司的accessKeySecret>";
private static String bucketName = "<这里是公司的bucketName>";
private static OSSClient ossClient;
/**删除图片
* @param key
*/
public static void deletePicture(String key){
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.deleteObject(bucketName, key);
ossClient.shutdown();
}
/**列出目录下所有文件(object)
* @param prefix 指定文件夹
* @return
*/
public static List<String> getAllKey(String prefix) {
List<String> commonPrefixes = getCommonPrefixes(prefix);
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
List<String> list = new ArrayList<String>();
for (String string : commonPrefixes) {
// 递归列出fun目录下的所有文件
listObjectsRequest.setPrefix(string);
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
list.add(objectSummary.getKey());
}
}
return list;
}
/**列出目录下所有子目录
* @param prefix 指定文件夹
* @return
*/
public static List<String> getCommonPrefixes(String prefix) {
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
// "/" 为文件夹的分隔符
listObjectsRequest.setDelimiter("/");
// 递归列出fun目录下的所有文件
listObjectsRequest.setPrefix(prefix + "/");
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
return listing.getCommonPrefixes();
}
}
DelObjectImpl
import java.util.Calendar;
import java.util.List;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/*
* 删除阿里云过期的object
* */
@Component
public class DelObjectImpl {
@Scheduled(cron = " 0 0 5 ? * MON ") // 每周一早5点执行一次
public void myTest() {//保存的key格式为: key = "circle/uid/" + Calendar.getInstance().getTimeInMillis();
List<String> list = AliyunUtils.getAllKey("circle");
for (String key : list) {
String[] split = key.split("/");
if (split[0].equals("circle")) {//删除3个月之前的文件
if (Calendar.getInstance().getTimeInMillis() > (Long.parseLong(split[2]) + 3600l * 1000 * 24 * 90)) {
AliyunUtils.deletePicture(key);
System.err.println("删除成功: "+ key);
}
}
}
}
}
配置定时器参考:
http://blog.youkuaiyun.com/llllvvv/article/details/75634663