在项目开发的过程中,文件存储是一大问题,本人遇到的情况是服务器的操作系统从原来的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 }
至此七牛云就整合到项目了,下面只需要写一个接口测试下即可。