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; 
 | 
  
 | 
/** 
 | 
 * 分布式web文件系统管理系统 
 | 
 */ 
 | 
@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<String> filePaths){ 
 | 
        List<FileRestVo> rList = new ArrayList<FileRestVo>() ; 
 | 
        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 ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 解析哈希值集合,计算出该这些哈希值对应的文件服务器属性 
 | 
     * @param hashCodes 
 | 
     * @return 文件服务器属性对象集合 
 | 
     */ 
 | 
    @PostMapping(path = "parseHashcodeList") 
 | 
    public FileRestVo[] parseHashcodeList(List<Integer> hashCodes){ 
 | 
        List<FileRestVo> reList = new ArrayList<>() ; 
 | 
        if(hashCodes != null && hashCodes.size() > 0){ 
 | 
            for(Integer hashCode : hashCodes){ 
 | 
                reList.add(parseHashcode(hashCode)) ; 
 | 
            } 
 | 
        } 
 | 
        return reList.toArray(new FileRestVo[0]) ; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |