Browse Source

oss新增上传方法

dev
yujintao 6 years ago
parent
commit
d3fa3756ae
  1. 187
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java
  2. 19
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java
  3. 39
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java

187
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

@ -1,14 +1,15 @@
/** /**
* Copyright (c) 2018 人人开源 All rights reserved. * Copyright (c) 2018 人人开源 All rights reserved.
* * <p>
* https://www.renren.io * https://www.renren.io
* * <p>
* 版权所有侵权必究 * 版权所有侵权必究
*/ */
package com.elink.esua.epdc.controller; package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.annotation.LogOperation; import com.elink.esua.epdc.commons.tools.annotation.LogOperation;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
@ -16,28 +17,17 @@ import com.elink.esua.epdc.commons.tools.validator.group.AliyunGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup; import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup; import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup;
import com.elink.esua.epdc.dto.UploadFormDTO; import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.dto.UploadToOssDTO;
import com.elink.esua.epdc.entity.OssEntity; import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.exception.ModuleErrorCode; import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.remote.ParamsRemoteService; import com.elink.esua.epdc.remote.ParamsRemoteService;
import com.elink.esua.epdc.service.OssService; import com.elink.esua.epdc.service.OssService;
import com.elink.esua.epdc.utils.ModuleConstant; import com.elink.esua.epdc.utils.ModuleConstant;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.elink.esua.epdc.commons.tools.annotation.LogOperation;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.cloud.CloudStorageConfig; import com.elink.esua.epdc.cloud.CloudStorageConfig;
import com.elink.esua.epdc.cloud.OssFactory; import com.elink.esua.epdc.cloud.OssFactory;
import com.elink.esua.epdc.commons.tools.validator.group.AliyunGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup;
import com.elink.esua.epdc.dto.UploadDTO; import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.enums.OssTypeEnum; import com.elink.esua.epdc.enums.OssTypeEnum;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.OssService;
import com.elink.esua.epdc.utils.ModuleConstant;
import com.elink.esua.epdc.remote.ParamsRemoteService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
@ -49,7 +39,6 @@ import springfox.documentation.annotations.ApiIgnore;
import sun.misc.BASE64Decoder; import sun.misc.BASE64Decoder;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
@ -59,102 +48,104 @@ import java.util.Map;
*/ */
@RestController @RestController
@RequestMapping("file") @RequestMapping("file")
@Api(tags="文件上传") @Api(tags = "文件上传")
public class OssController { public class OssController {
@Autowired
private OssService ossService; @Autowired
private OssService ossService;
@Autowired @Autowired
private ParamsRemoteService paramsRemoteService; private ParamsRemoteService paramsRemoteService;
private final static String KEY = ModuleConstant.CLOUD_STORAGE_CONFIG_KEY; private final static String KEY = ModuleConstant.CLOUD_STORAGE_CONFIG_KEY;
@GetMapping("page") @GetMapping("page")
@ApiOperation(value = "分页") @ApiOperation(value = "分页")
public Result<PageData<OssEntity>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<OssEntity>> page(@ApiIgnore @RequestParam Map<String, Object> params) {
PageData<OssEntity> page = ossService.page(params); PageData<OssEntity> page = ossService.page(params);
return new Result<PageData<OssEntity>>().ok(page); return new Result<PageData<OssEntity>>().ok(page);
} }
@GetMapping("info") @GetMapping("info")
@ApiOperation(value = "云存储配置信息") @ApiOperation(value = "云存储配置信息")
public Result<CloudStorageConfig> info(){ public Result<CloudStorageConfig> info() {
CloudStorageConfig config = paramsRemoteService.getValueObject(KEY, CloudStorageConfig.class); CloudStorageConfig config = paramsRemoteService.getValueObject(KEY, CloudStorageConfig.class);
return new Result<CloudStorageConfig>().ok(config); return new Result<CloudStorageConfig>().ok(config);
} }
@PostMapping @PostMapping
@ApiOperation(value = "保存云存储配置信息") @ApiOperation(value = "保存云存储配置信息")
@LogOperation("保存云存储配置信息") @LogOperation("保存云存储配置信息")
public Result saveConfig(@RequestBody CloudStorageConfig config){ public Result saveConfig(@RequestBody CloudStorageConfig config) {
//校验类型 //校验类型
ValidatorUtils.validateEntity(config); ValidatorUtils.validateEntity(config);
if(config.getType() == OssTypeEnum.QINIU.value()){ if (config.getType() == OssTypeEnum.QINIU.value()) {
//校验七牛数据 //校验七牛数据
ValidatorUtils.validateEntity(config, QiniuGroup.class); ValidatorUtils.validateEntity(config, QiniuGroup.class);
}else if(config.getType() == OssTypeEnum.ALIYUN.value()){ } else if (config.getType() == OssTypeEnum.ALIYUN.value()) {
//校验阿里云数据 //校验阿里云数据
ValidatorUtils.validateEntity(config, AliyunGroup.class); ValidatorUtils.validateEntity(config, AliyunGroup.class);
}else if(config.getType() == OssTypeEnum.QCLOUD.value()){ } else if (config.getType() == OssTypeEnum.QCLOUD.value()) {
//校验腾讯云数据 //校验腾讯云数据
ValidatorUtils.validateEntity(config, QcloudGroup.class); ValidatorUtils.validateEntity(config, QcloudGroup.class);
} }
paramsRemoteService.updateValueByCode(KEY, new Gson().toJson(config)); paramsRemoteService.updateValueByCode(KEY, new Gson().toJson(config));
return new Result(); return new Result();
} }
@PostMapping("upload") @PostMapping("upload")
@ApiOperation(value = "上传文件") @ApiOperation(value = "上传文件")
public Result<UploadDTO> upload(@RequestParam("file") MultipartFile file) throws Exception { public Result<UploadDTO> upload(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) { if (file.isEmpty()) {
return new Result<UploadDTO>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY); return new Result<UploadDTO>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
} }
//上传文件 //上传文件
String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String extension = FilenameUtils.getExtension(file.getOriginalFilename());
String url = OssFactory.build().uploadSuffix(file.getBytes(), extension); String url = OssFactory.build().uploadSuffix(file.getBytes(), extension);
//保存文件信息 return ossService.afterUpload(url, file.getSize());
OssEntity ossEntity = new OssEntity(); }
ossEntity.setUrl(url);
ossEntity.setCreateDate(new Date()); @DeleteMapping
ossService.insert(ossEntity); @ApiOperation(value = "删除")
@LogOperation("删除")
//文件信息 public Result delete(@RequestBody Long[] ids) {
UploadDTO dto = new UploadDTO(); ossService.deleteBatchIds(Arrays.asList(ids));
dto.setUrl(url);
dto.setSize(file.getSize()); return new Result();
}
return new Result<UploadDTO>().ok(dto);
} @PostMapping("uploadBase64")
@ApiOperation(value = "上传文件")
@DeleteMapping public Result<String> uploadFile(@RequestBody UploadFormDTO formDTO) throws Exception {
@ApiOperation(value = "删除") if (null == formDTO || StringUtils.isEmpty(formDTO.getBase64String())) {
@LogOperation("删除") return new Result<String>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
public Result delete(@RequestBody Long[] ids){ }
ossService.deleteBatchIds(Arrays.asList(ids)); String[] base64ImgArr = formDTO.getBase64String().split(",");
String suffixTmp = base64ImgArr[0];
return new Result(); String suffix = suffixTmp.substring(11, suffixTmp.indexOf(";"));
} byte[] imgBytes = new BASE64Decoder().decodeBuffer(base64ImgArr[1]);
String url = OssFactory.build().uploadSuffix(imgBytes, suffix);
@PostMapping("uploadBase64") return new Result<String>().ok(url);
@ApiOperation(value = "上传文件") }
public Result<String> uploadFile(@RequestBody UploadFormDTO formDTO) throws Exception {
if (null == formDTO || StringUtils.isEmpty(formDTO.getBase64String())) { @PostMapping("uploadFile")
return new Result<String>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY); public Result<String> uploadFile(@RequestBody UploadToOssDTO dto) {
} byte[] fileByte = dto.getFileByte();
String[] base64ImgArr = formDTO.getBase64String().split(","); if (null == fileByte || fileByte.length == NumConstant.ZERO) {
String suffixTmp = base64ImgArr[0]; return new Result().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
String suffix = suffixTmp.substring(11, suffixTmp.indexOf(";")); }
byte[] imgBytes = new BASE64Decoder().decodeBuffer(base64ImgArr[1]); //上传文件
String url = OssFactory.build().uploadSuffix(imgBytes, suffix); String extension = FilenameUtils.getExtension(dto.getFileName());
System.out.println("base64:"+formDTO.getBase64String()); String url = OssFactory.build().uploadSuffix(fileByte, extension);
System.out.println("url:"+url);
return new Result<String>().ok(url); return new Result().ok(url);
} }
} }

19
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java

@ -1,8 +1,8 @@
/** /**
* Copyright (c) 2018 人人开源 All rights reserved. * Copyright (c) 2018 人人开源 All rights reserved.
* * <p>
* https://www.renren.io * https://www.renren.io
* * <p>
* 版权所有侵权必究 * 版权所有侵权必究
*/ */
@ -12,6 +12,8 @@ import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.entity.OssEntity; import com.elink.esua.epdc.entity.OssEntity;
import java.util.Map; import java.util.Map;
@ -23,5 +25,16 @@ import java.util.Map;
*/ */
public interface OssService extends BaseService<OssEntity> { public interface OssService extends BaseService<OssEntity> {
PageData<OssEntity> page(Map<String, Object> params); PageData<OssEntity> page(Map<String, Object> params);
/**
* 文件上传后操作
*
* @param url 文件地址
* @param size 文件大小
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UploadDTO>
* @author work@yujt.net.cn
* @date 2019/9/19 10:09
*/
Result<UploadDTO> afterUpload(String url, long size);
} }

39
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java

@ -1,8 +1,8 @@
/** /**
* Copyright (c) 2018 人人开源 All rights reserved. * Copyright (c) 2018 人人开源 All rights reserved.
* * <p>
* https://www.renren.io * https://www.renren.io
* * <p>
* 版权所有侵权必究 * 版权所有侵权必究
*/ */
@ -16,22 +16,41 @@ import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dao.OssDao; import com.elink.esua.epdc.dao.OssDao;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.entity.OssEntity; import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.service.OssService; import com.elink.esua.epdc.service.OssService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Map; import java.util.Map;
@Service @Service
public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implements OssService { public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implements OssService {
@Override @Override
public PageData<OssEntity> page(Map<String, Object> params) { public PageData<OssEntity> page(Map<String, Object> params) {
IPage<OssEntity> page = baseDao.selectPage( IPage<OssEntity> page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false), getPage(params, Constant.CREATE_DATE, false),
new QueryWrapper<>() new QueryWrapper<>()
); );
return getPageData(page, OssEntity.class); return getPageData(page, OssEntity.class);
} }
@Override
public Result<UploadDTO> afterUpload(String url, long size) {
//保存文件信息
OssEntity ossEntity = new OssEntity();
ossEntity.setUrl(url);
ossEntity.setCreateDate(new Date());
this.insert(ossEntity);
//文件信息
UploadDTO dto = new UploadDTO();
dto.setUrl(url);
dto.setSize(size);
return new Result<UploadDTO>().ok(dto);
}
} }

Loading…
Cancel
Save