且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

springboot整合阿里云oss实现简单的增删改查

更新时间:2022-08-16 23:13:30

最近写练习的时候要用到文件的增删改查操作,听oss对象存储特别牛逼,我就想试一下。我去了华为云和阿里云看了一下价格,感觉还是阿里云的比较便宜,腾讯云就不考虑了,因为腾讯封了我的qq号,我的武则天都玩不了。首先我去看了一下文档,我靠,我发现我的水平有些低,感觉迷茫。我想我不如去csdn上找一个来抄了,于是想罢我就在csdn搜索栏里输入了springboot oss,

springboot整合阿里云oss实现简单的增删改查于是出来了这,然后我就看了第一个,好,点开看看,首先看了他的文章,明白了他的思路:

1.就是将阿里云依赖导入

2.然后用表单将文件提交到java服务器端

3.用文件上传方法上传

springboot整合阿里云oss实现简单的增删改查

我看了一下大概思路就这些,我就想着不如直接抄。

1.首先我们创建一个项目添加如下依赖

springboot整合阿里云oss实现简单的增删改查

因为我这里采用的是java11版本所以使用这个依赖,和照着抄的文章还是有点区别

2.在配置文件中添加下面配置

springboot整合阿里云oss实现简单的增删改查

这里需要注意的是与原文对比需要配置上传文件大小,因为springboot默认配置太小,容易报错。

accesskey和Accesssecret在这里按照提示配置即可,但要注意阿里云的提醒账号创建权限赋予问题(没有权限一样会报错):

springboot整合阿里云oss实现简单的增删改查

bucket在这里配置:

springboot整合阿里云oss实现简单的增删改查

3.将配置文件的oss信息,读取并自动封装成实体类

springboot整合阿里云oss实现简单的增删改查

4.具体上传和删除方法

与原文不同的是这里使用这个方法

springboot整合阿里云oss实现简单的增删改查

业务代码如下:

 @Autowired
    private ConstantProperties constantProperties;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    /**
     * 上传
     * @param file
     * @return
     */
    public  String upload(InputStream file,String name){
        String endpoint= constantProperties.getEndpoint();
        String accessKeyId= constantProperties.getKeyid();
        String accessKeySecret=constantProperties.getKeysecret();
        String bucketName=constantProperties.getBucketname();
        String fileHost=constantProperties.getFilehost();
        System.out.println(endpoint+"endpoint");
        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("-","")+"-"+name);
            //上传文件
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl, file);
            //设置权限 这里是公开读
            ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead);
            if(null != result){
                return fileUrl;
            }
        }catch (OSSException oe){
            System.out.println(oe.getMessage());
        }catch (ClientException ce){
            System.out.println(ce.getMessage());
        }finally {
            //关闭
            ossClient.shutdown();
        }
        return null;
    }
    /**
     * 删除
     * @param fileKey
     * @return
     */
    public  String deleteBlog(String fileKey){
        String endpoint= constantProperties.getEndpoint();
        String accessKeyId= constantProperties.getKeyid();
        String accessKeySecret=constantProperties.getKeysecret();
        String bucketName=constantProperties.getBucketname();
        String fileHost=constantProperties.getFilehost();
        try {
            OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret);

            if(!ossClient.doesBucketExist(bucketName)){
                return "您的Bucket不存在";
            }else {
                ossClient.deleteObject(bucketName,fileKey);
                return "==============>Object删除成功:"+fileKey;
            }
        }catch (Exception ex){
            return "删除Object失败";
        }
    }

5.控制层

这里原文是先创建一个文件,然后将文件提交,我个人感觉这样不好看,所以我这里用了上面的文件上传方法,这里传入的是文件流和名字。

springboot整合阿里云oss实现简单的增删改查

@Controller
@RequestMapping("/oss")
public class UploadController {
    @Autowired
    private Upload upload;
    @GetMapping("/toUploadBlog")
    public String toUploadBlog(){
        return "/upload";
    }
    @PostMapping("/toUploadBlog")
    public String toUploadBlogPost(MultipartFile file){
        String name=file.getOriginalFilename();
        try {
            if(null != file){
                String filename = file.getOriginalFilename();
                if(!"".equals(filename.trim())){
                    String uploadUrl = upload.upload(file.getInputStream(),name);
                }
            }else {

            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return "/index";
    }
    @GetMapping("/delete")
    @ResponseBody
    public String deleteBlog(@RequestParam("key")String key){
        upload.deleteBlog(key);
        return "删除成功";
    }
}

6.这里就用的是原文的页面

springboot整合阿里云oss实现简单的增删改查

springboot整合阿里云oss实现简单的增删改查

6.运行

1.上传

springboot整合阿里云oss实现简单的增删改查

springboot整合阿里云oss实现简单的增删改查

springboot整合阿里云oss实现简单的增删改查



2.查看

点击图片详情可以看出该链接是由http协议+bucket+文件路径组成

springboot整合阿里云oss实现简单的增删改查

springboot整合阿里云oss实现简单的增删改查

3.删除

springboot整合阿里云oss实现简单的增删改查

7.参考原文

8.代码地址