package com.dy.pipIrrWebFile.fm; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * 单点登录, */ @Slf4j @RestController @RequestMapping(path="fm") @SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked") public class FmCtrl { /** * 生成文件名,并且计算出该文件名对应的文件服务器属性 * 文件名称是不带路径的名称,例如:20170818153254_100000007.jpg,文件名中不能有“/”或“\”字符 * @param fileExtName 文件扩展名 * @return */ @PostMapping(path = "create") public FileRestVo create(String fileExtName){ FileRestVo rvo = new FileRestVo() ; if(fileExtName != null && !fileExtName.trim().equals("")){ try { String id = new FileNameIdUtil().generate(); if(id != null){ rvo.fileName = FileName.createFileName(false, id, fileExtName) ; rvo = new RestHashDeal().fileTransRest(rvo.fileName, rvo) ; } } catch (Exception e) { e.printStackTrace(); } } return rvo ; } /** * 解析文件名(带或不带相对路径),计算出该文件名对应的文件服务器属性 * 文件名称可以是不带路径的名称,例如:20170818153254_100000007.jpg * 文件名称可以是带路径的名称,例如:webFile/photo/20170818153254_100000007.jpg * @param filePath * @return */ @PostMapping(path = "parsePath") public FileRestVo parsePath(String filePath){ FileRestVo rvo = new FileRestVo() ; if(filePath != null && !filePath.trim().equals("")){ try { int index = filePath.lastIndexOf("\\") ; if(index > 0){ filePath = filePath.substring(index + 1); } index = filePath.lastIndexOf("/") ; if(index > 0){ filePath = filePath.substring(index + 1); } index = filePath.lastIndexOf("?") ; if(index > 0){ filePath = filePath.substring(0, index); } rvo.fileName = filePath ; rvo = new RestHashDeal().fileTransRest(filePath, rvo) ; } catch (Exception e) { e.printStackTrace(); } } return rvo ; } /** * 解析文件名,并且计算出该文件名对应的文件服务器属性 * 文件名称可以是不带路径的名称,例如:20170818153254_100000007.jpg * 文件名称可以是带路径的名称,例如:webFile/photo/20170818153254_100000007.jpg * @param filePaths * @return */ @PostMapping(path = "parsePathList", consumes = MediaType.APPLICATION_JSON_VALUE)//前端提交json数据 public FileRestVo[] parsePathList(List filePaths){ List rList = new ArrayList() ; if(filePaths != null && filePaths.size() > 0){ try { for(String filePath : filePaths){ FileRestVo rvo = new FileRestVo() ; int index = filePath.lastIndexOf("\\") ; if(index > 0){ filePath = filePath.substring(index + 1); } index = filePath.lastIndexOf("/") ; if(index > 0){ filePath = filePath.substring(index + 1); } index = filePath.lastIndexOf("?") ; if(index > 0){ filePath = filePath.substring(0, index); } rvo.fileName = filePath ; rvo = new RestHashDeal().fileTransRest(filePath, rvo) ; rList.add(rvo) ; } } catch (Exception e) { e.printStackTrace(); } } return rList.toArray(new FileRestVo[0]) ; } /** * 解析哈希值,计算出该哈希值对应的文件服务器属性 * @param hashCode * @return */ @PostMapping(path = "parseHashcode") public FileRestVo parseHashcode(Integer hashCode){ FileRestVo rvo = new FileRestVo() ; if(hashCode != null){ try { rvo.fileName = null ; rvo = new RestHashDeal().fileTransRest(hashCode, rvo) ; } catch (Exception e) { e.printStackTrace(); } } return rvo ; } }