Spring Boot---(19)SpringBoot整合阿里云OSS存储服务2
发布日期:2021-06-30 11:05:14
浏览次数:3
分类:技术文章
本文共 5590 字,大约阅读时间需要 18 分钟。
初次使用请参考:
本文介绍,如何获取某个bucket下某个目录中所有的文件名列表,如何删除某个文件。
1.工具类
package com.java4all.utils;import com.aliyun.oss.ClientException;import com.aliyun.oss.OSSClient;import com.aliyun.oss.OSSException;import com.aliyun.oss.model.*;import com.java4all.config.ConstantProperties;import org.slf4j.LoggerFactory;import java.io.File;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.UUID;/** * Created by lightClouds917 * Date 2018/2/7 * Description:aliyunOSSUtil */public class AliyunOSSUtil { private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AliyunOSSUtil.class); private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); /** * 上传文件 * @param file * @return */ public static String upload(File file){ logger.info("=========>OSS文件上传开始:"+file.getName()); String endpoint=ConstantProperties.JAVA4ALL_END_POINT; String accessKeyId=ConstantProperties.JAVA4ALL_ACCESS_KEY_ID; String accessKeySecret=ConstantProperties.JAVA4ALL_ACCESS_KEY_SECRET; String bucketName=ConstantProperties.JAVA4ALL_BUCKET_NAME1; String fileHost=ConstantProperties.JAVA4ALL_FILE_HOST; String dateStr = format.format(new Date()); if(null == file){ return null; } OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret); try { //容器不存在,就创建 if(! ossClient.doesBucketExist(bucketName)){ ossClient.createBucket(bucketName); CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); ossClient.createBucket(createBucketRequest); } //创建文件路径 String fileUrl = fileHost+"/"+(dateStr + "/" + UUID.randomUUID().toString().replace("-","")+"-"+file.getName()); //上传文件 PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, file)); //设置权限 这里是公开读 ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead); if(null != result){ logger.info("==========>OSS文件上传成功,OSS地址:"+fileUrl); return fileUrl; } }catch (OSSException oe){ logger.error(oe.getMessage()); }catch (ClientException ce){ logger.error(ce.getMessage()); }finally { //关闭 ossClient.shutdown(); } return null; } /** * 删除Object * @param fileKey * @return */ public static String deleteBlog(String fileKey){ logger.info("=========>OSS文件删除开始"); String endpoint=ConstantProperties.JAVA4ALL_END_POINT; String accessKeyId=ConstantProperties.JAVA4ALL_ACCESS_KEY_ID; String accessKeySecret=ConstantProperties.JAVA4ALL_ACCESS_KEY_SECRET; String bucketName=ConstantProperties.JAVA4ALL_BUCKET_NAME1; String fileHost=ConstantProperties.JAVA4ALL_FILE_HOST; try { OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret); if(!ossClient.doesBucketExist(bucketName)){ logger.info("==============>您的Bucket不存在"); return "您的Bucket不存在"; }else { logger.info("==============>开始删除Object"); ossClient.deleteObject(bucketName,fileKey); logger.info("==============>Object删除成功:"+fileKey); return "==============>Object删除成功:"+fileKey; } }catch (Exception ex){ logger.info("删除Object失败",ex); return "删除Object失败"; } } /** * 查询文件名列表 * @param bucketName * @return */ public static ListgetObjectList(String bucketName){ List listRe = new ArrayList<>(); String endpoint=ConstantProperties.JAVA4ALL_END_POINT; String accessKeyId=ConstantProperties.JAVA4ALL_ACCESS_KEY_ID; String accessKeySecret=ConstantProperties.JAVA4ALL_ACCESS_KEY_SECRET; try { logger.info("===========>查询文件名列表"); OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret); ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName); //列出blog目录下今天所有文件 listObjectsRequest.setPrefix("blog/"+format.format(new Date())+"/"); ObjectListing list = ossClient.listObjects(listObjectsRequest); for(OSSObjectSummary objectSummary : list.getObjectSummaries()){ listRe.add(objectSummary.getKey()); } return listRe; }catch (Exception ex){ logger.info("==========>查询列表失败",ex); return new ArrayList<>(); } }}
2.获取列表
/** * 获取Object名称列表 * @return */ @ResponseBody @RequestMapping(value = "getObjectList",method = RequestMethod.GET) public ListgetObjectList(){ String bucketName = ConstantProperties.JAVA4ALL_BUCKET_NAME1; List objectList = AliyunOSSUtil.getObjectList(bucketName); return objectList; }
调用接口,返回结果如下:
我们看一下控制台的目录结构:
请注意控制台的目录结构,注意java代码中prefix的写法。
3.删除文件
/** * 删除文件 */ @RequestMapping(value = "deleteBlog",method = RequestMethod.GET) @ResponseBody public String deleteBlog(){ String ObjectKey = "blog/2018-02-08/10bce22715504455b47ff036b922ec2b-导入企业税收 - 55.xlsx"; AliyunOSSUtil.deleteBlog(ObjectKey); return "删除成功"; }
调用一下此接口,然后再次查询列表,结果如下:
会发现,已经删除掉了。转载地址:https://it4all.blog.csdn.net/article/details/79289586 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月09日 06时28分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ubuntu 18 CTF 环境搭建
2019-04-30
linux内存的寻址方式
2019-04-30
[off by null + tcache dup]lctf_easy_heap
2019-04-30
[pie+libc]national2021_pwny
2019-04-30
task_struct 结构分析
2019-04-30
Linux创建进程的源码分析
2019-04-30
ubunut16.04的pip3出现问题,重新安装pip3
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
orw_shellcode_模板
2019-04-30
[fmt+shellcode]string
2019-04-30
fmt在bss段(neepusec_easy_format)
2019-04-30
[double free] 9447 CTF : Search Engine
2019-04-30
python 函数式编程
2019-04-30
python编码
2019-04-30
scala maven plugin
2019-04-30
flink 1-个人理解
2019-04-30
redis cli
2019-04-30
redis api
2019-04-30