package com.kmall.admin.controller; import com.alibaba.fastjson.JSON; import com.kmall.admin.entity.SysOssEntity; import com.kmall.common.fileserver.util.FileManager; import com.kmall.common.oss.CloudStorageConfig; import com.kmall.admin.fromcomm.service.SysConfigService; import com.kmall.admin.service.SysOssService; import com.kmall.common.utils.*; import com.kmall.common.validator.ValidatorUtils; import com.kmall.common.validator.group.AliyunGroup; import com.kmall.common.validator.group.QcloudGroup; import com.kmall.common.validator.group.QiniuGroup; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; 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 sun.misc.BASE64Encoder; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 文件上传 * * @author Scott * @email * @date 2017-03-25 12:13:26 */ @RestController @RequestMapping("sys/oss") public class SysOssController { @Autowired private SysOssService sysOssService; @Autowired private SysConfigService sysConfigService; private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY; /** * 列表 */ @RequestMapping("/list") @RequiresPermissions("sys:oss:all") public R list(@RequestParam Map params) { //查询列表数据 Query query = new Query(params); List sysOssList = sysOssService.queryList(query); int total = sysOssService.queryTotal(query); PageUtils pageUtil = new PageUtils(sysOssList, total, query.getLimit(), query.getPage()); return R.ok().put("page", pageUtil); } /** * 云存储配置信息 */ @RequestMapping("/config") @RequiresPermissions("sys:oss:all") public R config() { CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class); return R.ok().put("config", config); } /** * 保存云存储配置信息 */ @RequestMapping("/saveConfig") @RequiresPermissions("sys:oss:all") public R saveConfig(@RequestBody CloudStorageConfig config) { //校验类型 ValidatorUtils.validateEntity(config); if (config.getType() == Constant.CloudService.QINIU.getValue()) { //校验七牛数据 ValidatorUtils.validateEntity(config, QiniuGroup.class); } else if (config.getType() == Constant.CloudService.ALIYUN.getValue()) { //校验阿里云数据 ValidatorUtils.validateEntity(config, AliyunGroup.class); } else if (config.getType() == Constant.CloudService.QCLOUD.getValue()) { //校验腾讯云数据 ValidatorUtils.validateEntity(config, QcloudGroup.class); } sysConfigService.updateValueByKey(KEY, JSON.toJSONString(config)); return R.ok(); } /** * 上传文件 */ @RequestMapping("/upload") @RequiresPermissions("sys:oss:all") public R upload(@RequestParam("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } // String name = file.getOriginalFilename(); // Thumbnails.of(name).size(200, 200).keepAspectRatio(false).allowOverwrite(true).toFile(name); int AllowImgFileSize=0; //允许上传图片文件的大小 0为无限制 单位:KB Long size = file.getSize(); int ImgFileSize=Math.round(size/1024*100)/100;//取得图片文件的大小 if(ImgFileSize > 200){ throw new RRException("上传图片,不能超过 300k"); } //上传文件 String url = FileManager.upload(file); //保存文件信息 SysOssEntity ossEntity = new SysOssEntity(); ossEntity.setUrl(url); ossEntity.setCreateDate(new Date()); sysOssService.save(ossEntity); R r = new R(); r.put("url", url); r.put("link", url); return r; } /** * 上传视频文件,返回视频文件base64值 */ @RequestMapping("/uploadAndBase64") @RequiresPermissions("sys:oss:all") public R uploadAndBase64(@RequestParam("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } Long size = file.getSize(); int ImgFileSize=Math.round(size/1024*100)/100;//取得图片文件的大小 if(ImgFileSize > 500){ throw new RRException("上传视频,不能超过 500k"); } BASE64Encoder base64Encoder =new BASE64Encoder(); String base64EncoderImg = base64Encoder.encode(file.getBytes()); //上传文件在前端生成临时文件,此处只返回base64码 /*//上传文件 String url = FileManager.upload(file); //保存文件信息 SysOssEntity ossEntity = new SysOssEntity(); ossEntity.setUrl(url); ossEntity.setCreateDate(new Date()); sysOssService.save(ossEntity);*/ R r = new R(); // r.put("url", url); // r.put("link", url); r.put("base64EncoderImg", base64EncoderImg); return r; } /** * 删除 */ @RequestMapping("/delete") @RequiresPermissions("sys:oss:all") public R delete(@RequestBody Long[] ids) { sysOssService.deleteBatch(ids); return R.ok(); } /** * 查询所有列表 */ @RequestMapping("/queryAll") public List queryAll(@RequestParam Map params) { //查询列表数据 List sysOssList = sysOssService.queryList(params); List list = new ArrayList<>(); if (null != sysOssList && sysOssList.size() > 0) { for (SysOssEntity item : sysOssList) { list.add(item.getUrl()); } } return list; } }