diff --git a/pom.xml b/pom.xml
index 9fc0b32b76ebbfe754353c914d60cadbe275d5be..6af011f608b2e1c5ffff6d18e3802de408421fca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -187,7 +187,20 @@
mail
1.4.7
-
+
+
+
+ com.qiniu
+ qiniu-java-sdk
+ [7.2.0, 7.2.99]
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.6
+
diff --git a/src/main/java/com/fc/test/common/base/BaseController.java b/src/main/java/com/fc/test/common/base/BaseController.java
index dc67d5bb69f2af40bc5b7d69b386869da37eb488..8b67584a68a1d9830ce60bc8a287b32c68e4867a 100644
--- a/src/main/java/com/fc/test/common/base/BaseController.java
+++ b/src/main/java/com/fc/test/common/base/BaseController.java
@@ -5,14 +5,7 @@ import java.util.Date;
import com.fc.test.common.domain.AjaxResult;
import com.fc.test.model.custom.TitleVo;
-import com.fc.test.service.SysDatasService;
-import com.fc.test.service.SysFileDatasService;
-import com.fc.test.service.SysFileService;
-import com.fc.test.service.SysNoticeService;
-import com.fc.test.service.SysOperLogService;
-import com.fc.test.service.SysPermissionService;
-import com.fc.test.service.SysRoleService;
-import com.fc.test.service.SysUserService;
+import com.fc.test.service.*;
import com.fc.test.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
@@ -61,6 +54,10 @@ public class BaseController
//公告
@Autowired
public SysNoticeService sysNoticeService;
+
+ /*文件上传云库*/
+ @Autowired
+ private QiNiuCloudService qiNiuCloudService;
/**
* 将前台传递过来的日期格式的字符串,自动转化为Date类型
*/
diff --git a/src/main/java/com/fc/test/common/exception/QiNiuException.java b/src/main/java/com/fc/test/common/exception/QiNiuException.java
new file mode 100644
index 0000000000000000000000000000000000000000..59d7cd0215fc5ddad0438ae14da3b3f57faf5b03
--- /dev/null
+++ b/src/main/java/com/fc/test/common/exception/QiNiuException.java
@@ -0,0 +1,41 @@
+package com.fc.test.common.exception;
+
+
+import com.fc.test.common.exception.enums.QiNiuErrorEnum;
+import lombok.Data;
+
+/**
+ * QiNiuException
+ *
+ * @author bobbi
+ * @date 2018/10/07 13:54
+ * @email 571002217@qq.com
+ * @description 自定义异常
+ */
+@Data
+public class QiNiuException extends RuntimeException{
+ private String msg;
+ private int code = 500;
+
+ public QiNiuException(){
+ super(QiNiuErrorEnum.UNKNOWN.getMsg());
+ this.msg= QiNiuErrorEnum.UNKNOWN.getMsg();
+ }
+
+
+ public QiNiuException(QiNiuErrorEnum eEnum, Throwable e){
+ super(eEnum.getMsg(),e);
+ this.msg=eEnum.getMsg();
+ this.code=eEnum.getCode();
+ }
+
+ public QiNiuException(QiNiuErrorEnum eEnum){
+ this.msg=eEnum.getMsg();
+ this.code=eEnum.getCode();
+ }
+
+ public QiNiuException(String exception){
+ this.msg=exception;
+ }
+
+}
diff --git a/src/main/java/com/fc/test/common/exception/enums/QiNiuErrorEnum.java b/src/main/java/com/fc/test/common/exception/enums/QiNiuErrorEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..26538344b26a8c092d4e144ecf29c03ce818948e
--- /dev/null
+++ b/src/main/java/com/fc/test/common/exception/enums/QiNiuErrorEnum.java
@@ -0,0 +1,33 @@
+package com.fc.test.common.exception.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * QiNiuErrorEnum
+ * @description error类型枚举类
+ */
+@Getter
+@AllArgsConstructor
+public enum QiNiuErrorEnum {
+
+ // 系统错误
+ UNKNOWN(500,"系统内部错误,请联系管理员"),
+ PATH_NOT_FOUND(404,"路径不存在,请检查路径"),
+ NO_AUTH(403,"没有权限,请联系管理员"),
+ DUPLICATE_KEY(501,"数据库中已存在该记录"),
+ TOKEN_GENERATOR_ERROR(502,"token生成失败"),
+ NO_UUID(503,"uuid为空"),
+ SQL_ILLEGAL(504,"sql非法"),
+
+ //用户权限错误
+ INVALID_TOKEN(1001,"token不合法"),
+
+ //七牛OSS错误
+ OSS_CONFIG_ERROR(10050,"七牛配置信息错误"),
+ OSS_UPLOAD_ERROR(10051,"OSSBookNote上传失败");
+
+ private int code;
+ private String msg;
+
+}
diff --git a/src/main/java/com/fc/test/controller/admin/QiNiuCloudController.java b/src/main/java/com/fc/test/controller/admin/QiNiuCloudController.java
new file mode 100644
index 0000000000000000000000000000000000000000..c4d79687ddcd5af254fdfad16fc99fc7d5f286c4
--- /dev/null
+++ b/src/main/java/com/fc/test/controller/admin/QiNiuCloudController.java
@@ -0,0 +1,59 @@
+package com.fc.test.controller.admin;
+
+import com.fc.test.common.base.BaseController;
+import com.fc.test.model.custom.TitleVo;
+import com.fc.test.service.QiNiuCloudService;
+import com.fc.test.util.QiNiuResult;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * @ClassName dell
+ * @Description TOOD
+ * @Author X
+ * @Data 2019/11/13
+ * @Version 1.0
+ **/
+@Controller
+@RequestMapping("QiNiuCloudController")
+public class QiNiuCloudController extends BaseController {
+
+ @Autowired
+ private QiNiuCloudService qiNiuCloudService;
+
+ //跳转页面参数
+ private String prefix = "admin/fileCloud";
+
+ /**
+ * 文件上传云库展示页面
+ * TODO(请说明这个方法的作用).
+ * @param model
+ * @return
+ */
+ @GetMapping("/view")
+ @RequiresPermissions("system:file:view")
+ public String view(ModelMap model)
+ {
+ String str="图片上传云库";
+ setTitle(model, new TitleVo("列表", str+"管理", true,"欢迎进入"+str+"页面", true, false));
+ return prefix + "/list";
+ }
+
+
+ @PostMapping("/uploadToQiNiu")
+ @ResponseBody
+ public QiNiuResult upload(@RequestParam("file")MultipartFile uploadFile){
+ try {
+ return qiNiuCloudService.uploadToQiNiu(uploadFile);
+ } catch (IOException e){
+ e.printStackTrace();
+ return QiNiuResult.error(e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/com/fc/test/service/QiNiuCloudService.java b/src/main/java/com/fc/test/service/QiNiuCloudService.java
new file mode 100644
index 0000000000000000000000000000000000000000..2f506aa841e9838de77ec502adc8ff4b4998ea65
--- /dev/null
+++ b/src/main/java/com/fc/test/service/QiNiuCloudService.java
@@ -0,0 +1,66 @@
+package com.fc.test.service;
+
+import com.fc.test.util.QiNiuResult;
+import com.google.gson.Gson;
+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.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.UUID;
+
+/**
+ * @ClassName dell
+ * @Description TOOD
+ * @Author X
+ * @Data 2019/11/13
+ * @Version 1.0
+ **/
+@Service
+public class QiNiuCloudService {
+
+ @Value("${oss.qiniu.accessKey}")
+ private String accessKey;
+
+ @Value("${oss.qiniu.bucket}")
+ private String bucket;
+
+ @Value("${oss.qiniu.secretKey}")
+ private String secretKey;
+
+ @Value("${oss.qiniu.domain}")
+ private String domain;
+
+ public QiNiuResult uploadToQiNiu(MultipartFile uploadFile) throws IOException {
+
+ //构造一个带指定 Region 对象的配置类
+ Configuration cfg = new Configuration(Region.huanan());
+ //文件上传管理器
+ UploadManager uploadManager = new UploadManager(cfg);
+ //生成上传凭证,然后准备上传
+ Auth auth = Auth.create(accessKey, secretKey);
+ String upToken = auth.uploadToken(bucket);
+ //给图片重新设定名字
+ String fileName = uploadFile.getOriginalFilename();
+ String suffix = fileName.substring(fileName.lastIndexOf("."));
+ String uuid = UUID.randomUUID().toString().toUpperCase().replace("-", "");
+ fileName = uuid + suffix;
+ //默认不指定key的情况下,以文件内容的hash值作为文件名
+ Response response = uploadManager.put(uploadFile.getBytes(), fileName, upToken);
+ //解析上传成功的结果
+ DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
+ // System.out.println(putRet.key);
+ //System.out.println(putRet.hash);
+ //成功 返回url name
+ QiNiuResult r = QiNiuResult.ok()
+ .put("url", domain + "/" + putRet.key)
+ .put("name", putRet.key);
+ return r;
+ }
+}
diff --git a/src/main/java/com/fc/test/util/QiNiuResult.java b/src/main/java/com/fc/test/util/QiNiuResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..ecfee9ef387779ee0f2c387ba60e510445a3bf80
--- /dev/null
+++ b/src/main/java/com/fc/test/util/QiNiuResult.java
@@ -0,0 +1,62 @@
+package com.fc.test.util;
+
+import com.fc.test.common.exception.enums.QiNiuErrorEnum;
+
+import java.util.HashMap;
+
+/**
+ * QiNiuResult
+ *
+ * @description 通用返回类
+ */
+public class QiNiuResult extends HashMap {
+
+ public QiNiuResult() {
+ put("code", 200);
+ put("msg", "success");
+ }
+
+ public static QiNiuResult ok() {
+ return new QiNiuResult();
+ }
+
+ public static QiNiuResult error() {
+ return error(QiNiuErrorEnum.UNKNOWN);
+ }
+
+ public static QiNiuResult error(QiNiuErrorEnum eEnum) {
+ return new QiNiuResult().put("code", eEnum.getCode()).put("msg", eEnum.getMsg());
+ }
+
+ public static QiNiuResult error(String msg) {
+ return new QiNiuResult().put("msg",msg).put("code", QiNiuErrorEnum.UNKNOWN.getCode());
+ }
+
+ public static QiNiuResult error(Integer code , String msg){
+ return new QiNiuResult().put("code",code).put("msg",msg);
+ }
+
+ public static QiNiuResult exception() {
+ return exception(QiNiuErrorEnum.UNKNOWN);
+ }
+
+ public static QiNiuResult exception(QiNiuErrorEnum eEnum) {
+ return new QiNiuResult().put("code", eEnum.getCode()).put("msg", eEnum.getMsg());
+ }
+
+
+
+ /**
+ * 封装业务数据
+ *
+ * @param key
+ * @param value
+ * @return
+ */
+ @Override
+ public QiNiuResult put(String key, Object value) {
+ super.put(key, value);
+ //将HashMap对象本身返回
+ return this;
+ }
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 048672d04999896d8c1b9d13ef281508ee494676..240dd2582f3104e7cbf859d189cb61d91de6bbab 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -44,6 +44,7 @@ spring :
wall:
config:
multi-statement-allow: true
+
#mysql 8.0
#spring :
# datasource :
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 98a706373ec4fb2dc336807d9fd82319535aea39..08358689e3b7d1446f95f0c507f8fd2282122e30 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -81,4 +81,15 @@ pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
- params: count=countSql
\ No newline at end of file
+ params: count=countSql
+
+# 七牛云配置
+# bucket是创建的存储空间名
+# domain对应存储空间的访问域名
+# accessKey,secretKey秘钥
+oss:
+ qiniu:
+ domain:
+ accessKey:
+ secretKey:
+ bucket:
\ No newline at end of file
diff --git a/src/main/resources/templates/admin/fileCloud/list.html b/src/main/resources/templates/admin/fileCloud/list.html
new file mode 100644
index 0000000000000000000000000000000000000000..3780a983aaf27c3a2dcfc78f5a318a6f2c24cc79
--- /dev/null
+++ b/src/main/resources/templates/admin/fileCloud/list.html
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+