## 标题JAVA实现附件上传,同一附件多次上传只保留一份节省磁盘空间
)
Controller层
@ApiOperation(value = "上传附件", notes = "key为file")
@ApiImplicitParam(value = "request", name = "request", dataType = "MultipartHttpServletRequest", required = true, paramType = "body")
@PostMapping("upload")
public Result<SysAttachment> uploadFile(MultipartHttpServletRequest request) {
Result<SysAttachment> result = new Result<>();
Map<String, MultipartFile> fileMap = request.getFileMap();
if(!fileMap.containsKey("file")) {
return null;
}
SysAttachment sysAttachment = sysAttachmentService.uploadFile(fileMap.get("file"));
result.setCode(CommonConstant.SC_OK_200);
result.setMessage(sysAttachment.getAttachmentName());
result.setSuccess(true);
result.setResult(sysAttachment);
return result;
}
注:前端需要传指定参数:file
Service层
package org.jeecg.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.system.entity.SysAttachment;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
public interface ISysAttachmentService extends IService<SysAttachment> {
/**
* 上传附件
* @param file
* @return
*/
SysAttachment uploadFile(MultipartFile file);
}
Service Impl层
package org.jeecg.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.comm