進入七牛雲(https://marketing.qiniu.com/)注冊后進入--->個人中心--->密鑰管理(如果沒有就創建一個)
新建存儲空間
新建存儲空間后 空間名就是域名,點擊域名就進入到域名鏈接
新建完一系列之后讓我們動手敲代碼吧!!!!
導入pom.xml
<!--七牛雲--> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.11</version> </dependency>
配置yml
#七牛雲配置
# 七牛密鑰,配上自己申請的七牛賬號對應的密鑰
qiniu:
AccessKey:
SecretKey:
# 七牛空間名
Bucket:
BucketUrl:
簡單文件上傳
package com.yt.app.commons.utils; import com.google.gson.Gson; import com.qiniu.common.QiniuException; 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; import java.io.IOException; import java.util.UUID; /** * @ClassName UploadFileUtil * @Description: 上傳工具類 * @Author gzm * @Date 2020/5/14 16:54 **/ @Component public class UploadFileUtil { @Value("${qiNiuYun.AccessKey}") private String accessKey; @Value("${qiNiuYun.SecretKey}") private String secretKey; @Value("${qiNiuYun.Bucket}") private String bucket; @Value("${qiNiuYun.BucketUrl}") private String bucketUrl; /** * 在七牛雲上保存文件 * 返回字符串 * * @param file * @return */ public String saveFile(MultipartFile file) throws IOException { //構造一個帶指定Region對象的配置類 Configuration cfg = new Configuration(Region.huanan()); //生成上傳憑證,然后准備上傳 UploadManager uploadManager = new UploadManager(cfg); //創建權限類似於token Auth auth = Auth.create(accessKey,secretKey); //生成一個上傳的token String upToken = auth.uploadToken(bucket); int pos = file.getOriginalFilename().lastIndexOf("."); if (pos<0) return null; //生存文件名 String fileExt = file.getOriginalFilename().substring(pos+1).toLowerCase(); String fileName = UUID.randomUUID().toString().replaceAll("-","")+"."+fileExt; try { Response response = uploadManager.put(file.getBytes(), fileName, upToken); //解析上傳成功的結果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); System.out.println(bucketUrl+putRet.key+"結果"); return bucketUrl+putRet.key; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); return null; } } public String getFileSuffix(String fileName) { //獲取文件后綴名 return fileName.substring(fileName.lastIndexOf(".") + 1); } // private void checkSuffix(MultipartFile file) { // String suffix = getFileSuffix(file.getOriginalFilename()); // if (!Arrays.asList(allowSuffix).contains(suffix)) { // logger.error("不支持的文件類型"); // // throw new CustomRuntimeException(ResponseInfo.ResponseInfo_700.getCode().toString(), "不支持的文件類型"); // } // } }
注入bean以限制大小
package com.yt.xxx.app.config; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.servlet.MultipartConfigElement; /** * @ClassName UploadConfig * @Description: * @Author gzm * @Date 2020/6/4 16:24 **/ @Configuration public class UploadConfig { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // 單個數據大小 factory.setMaxFileSize("2MB"); // KB,MB /// 總上傳數據大小 factory.setMaxRequestSize("7MB"); return factory.createMultipartConfig(); } }
調用即可
package com.yt.xxx.app.controller; import com.yt.dzds.commons.model.pojo.LoginAppUser; import com.yt.dzds.commons.result.ResponseFailure; import com.yt.dzds.commons.result.ResponseInfo; import com.yt.dzds.commons.result.ResponseResult; import com.yt.dzds.commons.result.ResponseSuccess; import com.yt.dzds.commons.utils.AppUserUtil; import com.yt.dzds.commons.utils.FastUtils; import com.yt.dzds.commons.utils.StringUtils; import com.yt.dzds.commons.utils.UploadFileUtil; import com.yt.dzds.commons.utils.exception.NoAuthorityException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** * @ClassName Upload * @Description: * @Author gzm * @Date 2020/6/4 16:25 **/ @RestController @RequestMapping("upload") @Slf4j public class Upload { @Autowired private UploadFileUtil uploadFileUtil; @RequestMapping("files") public ResponseResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException { //加入登錄授權 LoginAppUser user = AppUserUtil.getLoginAppUser(); if(null==user){ FastUtils.checkCurrentUser(user); } long imgSize = file.getSize(); String suffix = uploadFileUtil.getFileSuffix(file.getOriginalFilename()); log.info("用戶上傳的圖片信息:" + file.getOriginalFilename() + "( " + suffix + " )" + "( " + imgSize + "KB )"); // 上傳的圖片格式驗證 // checkSuffix(file); String data = uploadFileUtil.saveFile(file); if (data != "") { return new ResponseSuccess<>(data); } else { return new ResponseFailure<>(ResponseInfo.ResponseInfo_610.getCode(), "保存錯誤"); } } }
大功告成,趕緊自己也去實現吧