博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

学习笔记:springBoot整合七牛云

Posted on 2022-09-30 13:12  麒宇天下  阅读(647)  评论(0编辑  收藏  举报

在项目开发的过程中,文件存储是一大问题,本人遇到的情况是服务器的操作系统从原来的Linux变成了windowServer,但是,自己写的文件上传具有SFTP功能,服务器对于一些路径出现了乱码的现象,所以本人选择采用七牛云解决文件上传和存储的问题。

前期需要自己去申请七牛云账号,创建存储空间,这里不会去详细说。

下面就是把七牛云通过springBoot整合到项目了。

1、导入七牛云相关依赖。

<dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.7.0, 7.7.99]</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

2、创建七牛云工具类。

 1 package com.zhkt.ott.fore_see.utils;
 2 
 3 import com.qiniu.storage.Configuration;
 4 import com.qiniu.storage.Region;
 5 import com.qiniu.storage.UploadManager;
 6 import com.qiniu.util.Auth;
 7 import org.springframework.stereotype.Component;
 8 import org.springframework.web.multipart.MultipartFile;
 9 
10 import java.io.IOException;
11 import java.text.SimpleDateFormat;
12 import java.util.*;
13 
14 /**
15  * 图片上传配置类
16  *
17  */
18 public class ImageUtil {
19 
20 
21     private static String accessKey = "6u_hQ6yzucJo9CS11ciQhFK1tzxdSv9P9_fzdY0Q";      //公钥
22     private static String accessSecretKey = "KjdxCJfpDfxFED4lMxalelukIbqmkbcyL6yXu2sf";   //私钥
23     private static String bucket = "zhihuiketangforesee";   // 存储空间
24     private static String url = "http://rj0bgk3bt.hd-bkt.clouddn.com/";
25 
26     /**
27      * 处理多文件
28      * @param multipartFiles
29      * @return
30      */
31     public static Map<String, List<String>> uploadImages(MultipartFile[] multipartFiles){
32         Map<String, List<String>> map = new HashMap<>();
33         List<String> imageUrls = new ArrayList<>();
34         for(MultipartFile file : multipartFiles){
35             imageUrls.add(uploadImageQiniu(file));
36         }
37         map.put("imageUrl",imageUrls);
38         return map;
39     }
40 
41     /**
42      * 上传图片到七牛云
43      * @param multipartFile
44      * @return
45      */
46     private static String uploadImageQiniu(MultipartFile multipartFile){
47         try {
48             //1、获取文件上传的流
49             byte[] fileBytes = multipartFile.getBytes();
50             //2、创建日期目录分隔
51             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
52             String datePath = dateFormat.format(new Date());
53 
54             //3、获取文件名
55             String originalFilename = multipartFile.getOriginalFilename();
56             String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
57             // String filename = datePath+"/"+ UUID.randomUUID().toString().replace("-", "")+ suffix;
58 
59             //4.构造一个带指定 Region 对象的配置类
60             //Region.南(根据自己的对象空间的地址选
61             Configuration cfg = new Configuration(Region.huanan());
62             UploadManager uploadManager = new UploadManager(cfg);
63 
64             //5.获取七牛云提供的 token
65             Auth auth = Auth.create(accessKey, accessSecretKey);
66             String upToken = auth.uploadToken(bucket);
67             uploadManager.put(fileBytes,originalFilename,upToken);
68 
69             return url+originalFilename;
70         } catch (IOException e) {
71             e.printStackTrace();
72         }
73         return null;
74     }
75 }

至此七牛云就整合到项目了,下面只需要写一个接口测试下即可。