SysOssController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.kmall.admin.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.kmall.admin.entity.SysOssEntity;
  4. import com.kmall.common.fileserver.util.FileManager;
  5. import com.kmall.common.oss.CloudStorageConfig;
  6. import com.kmall.admin.fromcomm.service.SysConfigService;
  7. import com.kmall.admin.service.SysOssService;
  8. import com.kmall.common.utils.*;
  9. import com.kmall.common.validator.ValidatorUtils;
  10. import com.kmall.common.validator.group.AliyunGroup;
  11. import com.kmall.common.validator.group.QcloudGroup;
  12. import com.kmall.common.validator.group.QiniuGroup;
  13. import org.apache.shiro.authz.annotation.RequiresPermissions;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.web.bind.annotation.RequestBody;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import org.springframework.web.multipart.MultipartFile;
  20. import sun.misc.BASE64Encoder;
  21. import java.io.FileInputStream;
  22. import java.util.ArrayList;
  23. import java.util.Date;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * 文件上传
  28. *
  29. * @author Scott
  30. * @email
  31. * @date 2017-03-25 12:13:26
  32. */
  33. @RestController
  34. @RequestMapping("sys/oss")
  35. public class SysOssController {
  36. @Autowired
  37. private SysOssService sysOssService;
  38. @Autowired
  39. private SysConfigService sysConfigService;
  40. private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY;
  41. /**
  42. * 列表
  43. */
  44. @RequestMapping("/list")
  45. @RequiresPermissions("sys:oss:all")
  46. public R list(@RequestParam Map<String, Object> params) {
  47. //查询列表数据
  48. Query query = new Query(params);
  49. List<SysOssEntity> sysOssList = sysOssService.queryList(query);
  50. int total = sysOssService.queryTotal(query);
  51. PageUtils pageUtil = new PageUtils(sysOssList, total, query.getLimit(), query.getPage());
  52. return R.ok().put("page", pageUtil);
  53. }
  54. /**
  55. * 云存储配置信息
  56. */
  57. @RequestMapping("/config")
  58. @RequiresPermissions("sys:oss:all")
  59. public R config() {
  60. CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class);
  61. return R.ok().put("config", config);
  62. }
  63. /**
  64. * 保存云存储配置信息
  65. */
  66. @RequestMapping("/saveConfig")
  67. @RequiresPermissions("sys:oss:all")
  68. public R saveConfig(@RequestBody CloudStorageConfig config) {
  69. //校验类型
  70. ValidatorUtils.validateEntity(config);
  71. if (config.getType() == Constant.CloudService.QINIU.getValue()) {
  72. //校验七牛数据
  73. ValidatorUtils.validateEntity(config, QiniuGroup.class);
  74. } else if (config.getType() == Constant.CloudService.ALIYUN.getValue()) {
  75. //校验阿里云数据
  76. ValidatorUtils.validateEntity(config, AliyunGroup.class);
  77. } else if (config.getType() == Constant.CloudService.QCLOUD.getValue()) {
  78. //校验腾讯云数据
  79. ValidatorUtils.validateEntity(config, QcloudGroup.class);
  80. }
  81. sysConfigService.updateValueByKey(KEY, JSON.toJSONString(config));
  82. return R.ok();
  83. }
  84. /**
  85. * 上传文件
  86. */
  87. @RequestMapping("/upload")
  88. @RequiresPermissions("sys:oss:all")
  89. public R upload(@RequestParam("file") MultipartFile file) throws Exception {
  90. if (file.isEmpty()) {
  91. throw new RRException("上传文件不能为空");
  92. }
  93. // String name = file.getOriginalFilename();
  94. // Thumbnails.of(name).size(200, 200).keepAspectRatio(false).allowOverwrite(true).toFile(name);
  95. int AllowImgFileSize=0; //允许上传图片文件的大小 0为无限制 单位:KB
  96. Long size = file.getSize();
  97. int ImgFileSize=Math.round(size/1024*100)/100;//取得图片文件的大小
  98. if(ImgFileSize > 200){
  99. throw new RRException("上传图片,不能超过 300k");
  100. }
  101. //上传文件
  102. String url = FileManager.upload(file);
  103. //保存文件信息
  104. SysOssEntity ossEntity = new SysOssEntity();
  105. ossEntity.setUrl(url);
  106. ossEntity.setCreateDate(new Date());
  107. sysOssService.save(ossEntity);
  108. R r = new R();
  109. r.put("url", url);
  110. r.put("link", url);
  111. return r;
  112. }
  113. /**
  114. * 上传视频文件,返回视频文件base64值
  115. */
  116. @RequestMapping("/uploadAndBase64")
  117. @RequiresPermissions("sys:oss:all")
  118. public R uploadAndBase64(@RequestParam("file") MultipartFile file) throws Exception {
  119. if (file.isEmpty()) {
  120. throw new RRException("上传文件不能为空");
  121. }
  122. Long size = file.getSize();
  123. int ImgFileSize=Math.round(size/1024*100)/100;//取得图片文件的大小
  124. if(ImgFileSize > 500){
  125. throw new RRException("上传视频,不能超过 500k");
  126. }
  127. BASE64Encoder base64Encoder =new BASE64Encoder();
  128. String base64EncoderImg = base64Encoder.encode(file.getBytes());
  129. //上传文件在前端生成临时文件,此处只返回base64码
  130. /*//上传文件
  131. String url = FileManager.upload(file);
  132. //保存文件信息
  133. SysOssEntity ossEntity = new SysOssEntity();
  134. ossEntity.setUrl(url);
  135. ossEntity.setCreateDate(new Date());
  136. sysOssService.save(ossEntity);*/
  137. R r = new R();
  138. // r.put("url", url);
  139. // r.put("link", url);
  140. r.put("base64EncoderImg", base64EncoderImg);
  141. return r;
  142. }
  143. /**
  144. * 删除
  145. */
  146. @RequestMapping("/delete")
  147. @RequiresPermissions("sys:oss:all")
  148. public R delete(@RequestBody Long[] ids) {
  149. sysOssService.deleteBatch(ids);
  150. return R.ok();
  151. }
  152. /**
  153. * 查询所有列表
  154. */
  155. @RequestMapping("/queryAll")
  156. public List<String> queryAll(@RequestParam Map<String, Object> params) {
  157. //查询列表数据
  158. List<SysOssEntity> sysOssList = sysOssService.queryList(params);
  159. List<String> list = new ArrayList<>();
  160. if (null != sysOssList && sysOssList.size() > 0) {
  161. for (SysOssEntity item : sysOssList) {
  162. list.add(item.getUrl());
  163. }
  164. }
  165. return list;
  166. }
  167. }