import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.UUID; /** */ public class FileSystemUploadServiceImpl extends AbstractFileUploadService { private final String STORAGE_DIR = "upload"; private final Logger log = LoggerFactory.getLogger(FileSystemUploadServiceImpl.class); @Override protected String saveFileInternal(MultipartFile file) throws IOException { log.debug("获取文件MIME类型-" + file.getContentType());// 获取文件MIME类型 log.debug("获取表单中文件组件的名字-" + file.getName());// 获取表单中文件组件的名字 log.debug("获取上传文件的原名-" + file.getOriginalFilename());// 获取上传文件的原名 log.debug("获取文件的字节大小,单位byte-" + file.getSize());// 获取文件的字节大小,单位byte String fileName = UUID.randomUUID().toString().replaceAll("-", "") + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));// 保存后的文件名 log.info(fileName); String filePath = getRealPath(STORAGE_DIR) + File.separator; ensureFolderExists(filePath); log.info("file stored in {}" , filePath); String retPath = STORAGE_DIR + File.separator + fileName; File uploadFile = new File(filePath + fileName); uploadFile.mkdirs(); file.transferTo(new File(filePath,fileName)); return File.separator + retPath; } @Override protected void removeFileInternal(ApFileJpaEntity file) { String path = file.getPath(); File f = new File(getRealPath() + path); if( f.exists() ) f.delete(); } // --------------- private methods private HttpServletRequest getRequest(){ return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } private String getRealPath(){ return getRequest().getServletContext().getRealPath("/"); } private String getRealPath(String path){ return getRequest().getServletContext().getRealPath(path); } private void ensureFolderExists(String dir){ File file = new File(dir); if( file.isDirectory() && !file.exists() ) file.mkdirs(); } }