首先要去七牛云云服务进行注册登录,在首页的左侧对象找到对象存储 -> 空间管理 -> 新建存储空间:
第二步:导入依赖
<dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.7.0, 7.7.99]</version> </dependency>
第三步:在工具类中加入配置七牛云的云存储类
package com.mszlu.blog.utils; import com.alibaba.fastjson.JSON; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @Component public class QiniuUtils { public static final String url = "http://rdngykd80.hn-bkt.clouddn.com"; //在配置文件中配置存储空间的账户 @Value("${qiniu.accessKey}") private String accessKey; //在配置文件中配置存储空间的秘钥 @Value("${qiniu.accessSecretKey}") private String accessSecretKey; public boolean upload(MultipartFile file, String fileName) { //构造一个带指定 Region 对象的配置类 //这里是你创建存储空间时候选择的地区 Configuration cfg = new Configuration(Region.huanan()); //...其他参数参考类注释 UploadManager uploadManager = new UploadManager(cfg); //...生成上传凭证,然后准备上传 //这里是存储空间的名字 String bucket = "mszlzcy"; //默认不指定key的情况下,以文件内容的hash值作为文件名 try { byte[] uploadBytes = file.getBytes(); Auth auth = Auth.create(accessKey, accessSecretKey); String upToken = auth.uploadToken(bucket); Response response = uploadManager.put(uploadBytes, fileName, upToken); //解析上传成功的结果 DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class); return true; } catch (Exception ex) { ex.printStackTrace(); } return false; } }
第四步:在controller层写上配置方法
@RestController @RequestMapping("upload") public class UploadController { @Autowired private QiniuUtils qiniuUtils; @PostMapping //这里的@RequestParam("image")表示前端传的参数是image,对应的file参数,果然你的前端的参数也是file就不需要加这个注解 public Result Upload(@RequestParam("image") MultipartFile file){ //原始文件名称 比如 aa.png String originalFilename = file.getOriginalFilename(); //唯一的文件名称 String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(originalFilename, "."); //上传文件上传到哪呢 上传到 七牛云 云服务器 按量付费 速度快 //把图片发放到离客户最近的服务器上 //降低 我们自身应用服务器的宽带消耗 boolean upload = qiniuUtils.upload(file, fileName); if (upload) { return Result.success(QiniuUtils.url+"/" + fileName); } return Result.fail(20001,"上传失败"); }