| New file | 
|  |  |  | 
|---|
|  |  |  | package com.dy.pipIrrGlobal.webCtrls; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.webUtil.BaseResponse; | 
|---|
|  |  |  | import com.dy.common.webUtil.BaseResponseUtils; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.dyFile.FileConstant; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.dyFile.FileOperate; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.dyFile.FileRestVo; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.dyFile.FileVo; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoFi.WebFile; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.PostMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  | import org.springframework.web.multipart.MultipartFile; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * web文件上传 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping(path="webFile") | 
|---|
|  |  |  | public class WebFileCtrl { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private FileOperate fileOp ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WebFileSv sv ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${dy.webFile.fmUrl}") | 
|---|
|  |  |  | private String fmUrl ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //支持的文件类型 | 
|---|
|  |  |  | @Value("${dy.webFile.supportedFileTypes}") | 
|---|
|  |  |  | private String supportedFileTypes ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //视频的缩略图的扩展名 | 
|---|
|  |  |  | private static final String VideoZipPicFileType = "jpg"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上传照片图片文件 (当前只对png jpg格式图片支持缩略图) | 
|---|
|  |  |  | * @param file web端上传文件的post对象 | 
|---|
|  |  |  | * @return 返回结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/upPhoto") | 
|---|
|  |  |  | //参考:https://blog.zhengru.top/posts/33486.html#%E5%8D%95%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0 | 
|---|
|  |  |  | public BaseResponse<?> upPhoto(MultipartFile file) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (file != null) { | 
|---|
|  |  |  | String[] fileNameGrp = fileOp.splitFileName(file) ; | 
|---|
|  |  |  | if(fileNameGrp != null && fileNameGrp[0] != null && fileNameGrp[1] != null){ | 
|---|
|  |  |  | if(!fileNameGrp[1].trim().equals("")){ | 
|---|
|  |  |  | FileRestVo frVo = fileOp.saveFile(file, | 
|---|
|  |  |  | fmUrl, | 
|---|
|  |  |  | FileConstant.fileRequestMapping, | 
|---|
|  |  |  | FileConstant.filePostMapping_photo, | 
|---|
|  |  |  | FileConstant.NotRegionNum, | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | null); | 
|---|
|  |  |  | String fileMainName = fileOp.getFileMainName(frVo.fileName) ; | 
|---|
|  |  |  | Long id = this.saveFileInfo(fileNameGrp[0], fileNameGrp[1], fileMainName, frVo.fileNameHash, frVo.fileWebPath); | 
|---|
|  |  |  | FileVo fvo = new FileVo(id, | 
|---|
|  |  |  | frVo.fileNameHash, | 
|---|
|  |  |  | fileNameGrp[0], | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | frVo.getFileWebPath(), | 
|---|
|  |  |  | (frVo.getFileWebUrl() + frVo.getFileWebPath()), | 
|---|
|  |  |  | fileOp.getFileZipPath(frVo.getFileWebUrl() + frVo.getFileWebPath()), | 
|---|
|  |  |  | frVo.fileWebDownloadPath + id) ; | 
|---|
|  |  |  | return  BaseResponseUtils.buildSuccess(fvo) ; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未得到上传文件的扩展名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未能拆分上传文件名称"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未上传文件"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("上传照片文件异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上传录音音频文件 | 
|---|
|  |  |  | * @param file web端上传文件的post对象 | 
|---|
|  |  |  | * @return 返回结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/upPhone") | 
|---|
|  |  |  | public BaseResponse<?> upPhone(MultipartFile file) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (file != null) { | 
|---|
|  |  |  | String[] fileNameGrp = fileOp.splitFileName(file) ; | 
|---|
|  |  |  | if(fileNameGrp != null && fileNameGrp[0] != null && fileNameGrp[1] != null){ | 
|---|
|  |  |  | if(!fileNameGrp[1].trim().equals("")){ | 
|---|
|  |  |  | FileRestVo frVo = fileOp.saveFile(file, | 
|---|
|  |  |  | fmUrl, | 
|---|
|  |  |  | FileConstant.fileRequestMapping, | 
|---|
|  |  |  | FileConstant.filePostMapping_phone, | 
|---|
|  |  |  | FileConstant.NotRegionNum, | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | null); | 
|---|
|  |  |  | String fileMainName = fileOp.getFileMainName(frVo.fileName) ; | 
|---|
|  |  |  | Long id = this.saveFileInfo(fileNameGrp[0], fileNameGrp[1], fileMainName, frVo.fileNameHash, frVo.fileWebPath); | 
|---|
|  |  |  | FileVo fvo = new FileVo(id, | 
|---|
|  |  |  | frVo.fileNameHash, | 
|---|
|  |  |  | fileNameGrp[0], | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | frVo.getFileWebPath(), | 
|---|
|  |  |  | frVo.getFileWebUrl() + frVo.getFileWebPath(), | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | frVo.fileWebDownloadPath + id) ; | 
|---|
|  |  |  | return  BaseResponseUtils.buildSuccess(fvo) ; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未得到上传文件的扩展名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未能拆分上传文件名称"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未上传文件"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("上传照片文件异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上传录像视频文件 | 
|---|
|  |  |  | * @param file web端上传文件的post对象 | 
|---|
|  |  |  | * @return 返回结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/upVideo") | 
|---|
|  |  |  | public BaseResponse<?> upVideo(MultipartFile file) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (file != null) { | 
|---|
|  |  |  | String[] fileNameGrp = fileOp.splitFileName(file) ; | 
|---|
|  |  |  | if(fileNameGrp != null && fileNameGrp[0] != null && fileNameGrp[1] != null){ | 
|---|
|  |  |  | if(!fileNameGrp[1].trim().equals("")){ | 
|---|
|  |  |  | FileRestVo frVo = fileOp.saveFile(file, | 
|---|
|  |  |  | fmUrl, | 
|---|
|  |  |  | FileConstant.fileRequestMapping, | 
|---|
|  |  |  | FileConstant.filePostMapping_video, | 
|---|
|  |  |  | FileConstant.NotRegionNum, | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | null); | 
|---|
|  |  |  | String fileMainName = fileOp.getFileMainName(frVo.fileName) ; | 
|---|
|  |  |  | Long id = this.saveFileInfo(fileNameGrp[0], fileNameGrp[1], fileMainName, frVo.fileNameHash, frVo.fileWebPath); | 
|---|
|  |  |  | FileVo fvo = new FileVo(id, | 
|---|
|  |  |  | frVo.fileNameHash, | 
|---|
|  |  |  | fileNameGrp[0], | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | frVo.getFileWebPath(), | 
|---|
|  |  |  | frVo.getFileWebUrl() + frVo.getFileWebPath(), | 
|---|
|  |  |  | fileOp.getFileZipPath(frVo.getFileWebUrl() + frVo.getFileWebPath(), VideoZipPicFileType), | 
|---|
|  |  |  | frVo.fileWebDownloadPath + id) ; | 
|---|
|  |  |  | return  BaseResponseUtils.buildSuccess(fvo) ; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未得到上传文件的扩展名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未能拆分上传文件名称"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未上传文件"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("上传照片文件异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上传文档文件 | 
|---|
|  |  |  | * @param file web端上传文件的post对象 | 
|---|
|  |  |  | * @return 返回结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/upDocument") | 
|---|
|  |  |  | public BaseResponse<?> upDocument(MultipartFile file) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (file != null) { | 
|---|
|  |  |  | String[] fileNameGrp = fileOp.splitFileName(file) ; | 
|---|
|  |  |  | if(fileNameGrp != null && fileNameGrp[0] != null && fileNameGrp[1] != null){ | 
|---|
|  |  |  | if(!fileNameGrp[1].trim().equals("")){ | 
|---|
|  |  |  | String fileExtName = fileNameGrp[1]; | 
|---|
|  |  |  | if(!supportedFileTypes.contains(fileExtName)){ | 
|---|
|  |  |  | return BaseResponseUtils.buildError("请上传Word,Excel,PDF类型文档"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | FileRestVo frVo = fileOp.saveFile(file, | 
|---|
|  |  |  | fmUrl, | 
|---|
|  |  |  | FileConstant.fileRequestMapping, | 
|---|
|  |  |  | FileConstant.filePostMapping_document, | 
|---|
|  |  |  | FileConstant.NotRegionNum, | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | null); | 
|---|
|  |  |  | String fileMainName = fileOp.getFileMainName(frVo.fileName) ; | 
|---|
|  |  |  | Long id = this.saveFileInfo(fileNameGrp[0], fileNameGrp[1], fileMainName, frVo.fileNameHash, frVo.fileWebPath); | 
|---|
|  |  |  | FileVo fvo = new FileVo(id, | 
|---|
|  |  |  | frVo.fileNameHash, | 
|---|
|  |  |  | fileNameGrp[0], | 
|---|
|  |  |  | fileNameGrp[1], | 
|---|
|  |  |  | frVo.getFileWebPath(), | 
|---|
|  |  |  | frVo.getFileWebUrl() + frVo.getFileWebPath(), | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | frVo.fileWebDownloadPath + id) ; | 
|---|
|  |  |  | return  BaseResponseUtils.buildSuccess(fvo) ; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未得到上传文件的扩展名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未能拆分上传文件名称"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return BaseResponseUtils.buildError("未上传文件"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("上传照片文件异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 数据库存储 | 
|---|
|  |  |  | * @param orgName 文件原名称 | 
|---|
|  |  |  | * @param extName 文件扩展名 | 
|---|
|  |  |  | * @param newName 文件新名称 | 
|---|
|  |  |  | * @param hash  文件新名称的哈希值 | 
|---|
|  |  |  | * @param filePath 文件服务端存储相对路径 | 
|---|
|  |  |  | * @return 数据记录主键 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Long saveFileInfo(String orgName, String extName, String newName, Integer hash, String filePath){ | 
|---|
|  |  |  | WebFile po = new WebFile() ; | 
|---|
|  |  |  | po.orgName = orgName ; | 
|---|
|  |  |  | po.extName = extName ; | 
|---|
|  |  |  | po.newName = newName ; | 
|---|
|  |  |  | po.hash = hash ; | 
|---|
|  |  |  | po.filePath = filePath ; | 
|---|
|  |  |  | po.dt = new Date() ; | 
|---|
|  |  |  | return this.sv.save(po) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|