|  | @ -1,20 +1,19 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.file_upload;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
	
		
			
				|  |  | import com.yihu.fastdfs.FastDFSUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.exception.code.BaseErrorCode;
 | 
	
		
			
				|  |  | import com.yihu.jw.patient.util.ConstantUtils;
 | 
	
		
			
				|  |  | import com.yihu.jw.exception.business.file_upload.*;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.iot.common.UploadVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.ObjEnvelop;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.csource.common.MyException;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.io.ByteArrayInputStream;
 | 
	
		
			
				|  |  | import java.io.IOException;
 | 
	
		
			
				|  |  | import java.io.InputStream;
 | 
	
		
			
				|  |  | import java.net.URLDecoder;
 | 
	
		
			
				|  |  | import java.security.NoSuchAlgorithmException;
 | 
	
		
			
				|  |  | import java.util.Base64;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -27,12 +26,6 @@ public class FileUploadService {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private FastDFSUtil fastDFSHelper;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Value("${fastDFS.fastdfs_file_url}")
 | 
	
		
			
				|  |  |     private String fastdfs_file_url;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | //    @Autowired
 | 
	
		
			
				|  |  | //    private ErrorCodeUtil errorCodeUtil;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 文件流上传图片
 | 
	
		
			
				|  |  |      * @param inputStream
 | 
	
	
		
			
				|  | @ -40,27 +33,28 @@ public class FileUploadService {
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject uploadImg(InputStream inputStream, String originalFileName,long fileSize) throws Exception{
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |     public UploadVO uploadImg(InputStream inputStream, String originalFileName,long fileSize,String fastdfs_file_url) throws NoSuchAlgorithmException, IOException, MyException {
 | 
	
		
			
				|  |  |         // 得到文件的完整名称  xxx.txt
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(originalFileName) || null == inputStream){
 | 
	
		
			
				|  |  |             result.put("msg","图片文件名或图片文件流不可为空!");
 | 
	
		
			
				|  |  |             result.put("response", ConstantUtils.FAIL);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         if( null == inputStream){
 | 
	
		
			
				|  |  |             throw new FileInputStreamEmptyException("图片文件流不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(originalFileName)){
 | 
	
		
			
				|  |  |             throw new FileNameEmptyException("图片文件名不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fastdfs_file_url)){
 | 
	
		
			
				|  |  |             throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //得到文件类型
 | 
	
		
			
				|  |  |         String fileType = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fileType)||!"jpg,jpeg,png".contains(fileType)){
 | 
	
		
			
				|  |  |             result.put("msg","图片文件格式不正确,请上传jpg,jpeg,png等任一格式!");
 | 
	
		
			
				|  |  |             result.put("response", ConstantUtils.FAIL);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |             throw new FileWrongFormatException("图片文件格式不正确,请上传jpg,jpeg,png等任一格式!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         long max = 5*1024*1024;
 | 
	
		
			
				|  |  |         if(fileSize > max){
 | 
	
		
			
				|  |  |             result.put("msg","图片文件过大,请不要超过5M!");
 | 
	
		
			
				|  |  |             result.put("response", ConstantUtils.FAIL);
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |             throw new FileTooLargeSizeException("图片文件过大,请不要超过5M!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String fileName = originalFileName.substring(0, originalFileName.lastIndexOf("."));
 | 
	
	
		
			
				|  | @ -72,82 +66,99 @@ public class FileUploadService {
 | 
	
		
			
				|  |  |         uploadVO.setFileType(fileType);
 | 
	
		
			
				|  |  |         uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         result.put("response", ConstantUtils.SUCCESS);
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /*
 | 
	
		
			
				|  |  |     *//**
 | 
	
		
			
				|  |  |      /*
 | 
	
		
			
				|  |  |      * 文件流上传附件
 | 
	
		
			
				|  |  |      * @param file
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      *//*
 | 
	
		
			
				|  |  |     public ObjEnvelop<UploadVO> uploadAttachment(MultipartFile file) throws Exception{
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public UploadVO uploadAttachment(InputStream inputStream, String originalFileName,long fileSize,String fastdfs_file_url) throws Exception{
 | 
	
		
			
				|  |  |         // 得到文件的完整名称  xxx.txt
 | 
	
		
			
				|  |  |         String fullName = file.getOriginalFilename();
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fullName)){
 | 
	
		
			
				|  |  |             return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FAIL_UPLOAD_FORMAT), ObjEnvelop.class);
 | 
	
		
			
				|  |  |         if( null == inputStream){
 | 
	
		
			
				|  |  |             throw new FileInputStreamEmptyException("附件文件流不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(originalFileName)){
 | 
	
		
			
				|  |  |             throw new FileNameEmptyException("图片文件名不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fastdfs_file_url)){
 | 
	
		
			
				|  |  |             throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //得到文件类型
 | 
	
		
			
				|  |  |         String fileType = fullName.substring(fullName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         String fileType = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fileType)||!"doc、docx、pdf、xls、xlsx、jpg、jpeg、png".contains(fileType)){
 | 
	
		
			
				|  |  |             return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FAIL_UPLOAD_FORMAT), ObjEnvelop.class);
 | 
	
		
			
				|  |  |             throw new FileWrongFormatException("附件文件格式不正确,请上传doc、docx、pdf、xls、xlsx、jpg、jpeg、png等任一格式!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         long size = file.getSize();
 | 
	
		
			
				|  |  |         long max = 5*1024*1024;
 | 
	
		
			
				|  |  |         if(size>max){
 | 
	
		
			
				|  |  |             String msg = String.format(BaseErrorCode.FileUpload.FAIL_FILE_SIZE, 5);
 | 
	
		
			
				|  |  |             return failed(msg, ObjEnvelop.class);
 | 
	
		
			
				|  |  |         if(fileSize > max){
 | 
	
		
			
				|  |  |             throw new FileTooLargeSizeException("附件文件过大,请不要超过5M!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String fileName = fullName.substring(0, fullName.lastIndexOf("."));
 | 
	
		
			
				|  |  |         String fileName = originalFileName.substring(0, originalFileName.lastIndexOf("."));
 | 
	
		
			
				|  |  |         //上传到fastdfs
 | 
	
		
			
				|  |  |         ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), fileType, "");
 | 
	
		
			
				|  |  |         ObjectNode objectNode = fastDFSHelper.upload(inputStream, fileType, "");
 | 
	
		
			
				|  |  |         //解析返回的objectNode
 | 
	
		
			
				|  |  |         UploadVO uploadVO = new UploadVO();
 | 
	
		
			
				|  |  |         uploadVO.setFileName(fileName);
 | 
	
		
			
				|  |  |         uploadVO.setFileType(fileType);
 | 
	
		
			
				|  |  |         uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         return success("上传成功", uploadVO);
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     *//**
 | 
	
		
			
				|  |  |     /*
 | 
	
		
			
				|  |  |      * 文件流上传文件
 | 
	
		
			
				|  |  |      * @param file
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      *//*
 | 
	
		
			
				|  |  |     public ObjEnvelop<UploadVO> uploadStream(@ApiParam(value = "文件", required = true)
 | 
	
		
			
				|  |  |                                              @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{
 | 
	
		
			
				|  |  |         // 得到文件的完整名称  xxx.txt
 | 
	
		
			
				|  |  |         String fullName = file.getOriginalFilename();
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public UploadVO uploadStream(InputStream inputStream, String originalFileName,String fastdfs_file_url) throws Exception{
 | 
	
		
			
				|  |  |         if( null == inputStream){
 | 
	
		
			
				|  |  |             throw new FileInputStreamEmptyException("文件内容不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(originalFileName)){
 | 
	
		
			
				|  |  |             throw new FileNameEmptyException("文件名不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fastdfs_file_url)){
 | 
	
		
			
				|  |  |             throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //得到文件类型
 | 
	
		
			
				|  |  |         String fileType = fullName.substring(fullName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         String fileName = fullName.substring(0, fullName.lastIndexOf("."));
 | 
	
		
			
				|  |  |         String fileType = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         String fileName = originalFileName.substring(0, originalFileName.lastIndexOf("."));
 | 
	
		
			
				|  |  |         //上传到fastdfs
 | 
	
		
			
				|  |  |         ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), fileType, "");
 | 
	
		
			
				|  |  |         ObjectNode objectNode = fastDFSHelper.upload(inputStream, fileType, "");
 | 
	
		
			
				|  |  |         //解析返回的objectNode
 | 
	
		
			
				|  |  |         UploadVO uploadVO = new UploadVO();
 | 
	
		
			
				|  |  |         uploadVO.setFileName(fileName);
 | 
	
		
			
				|  |  |         uploadVO.setFileType(fileType);
 | 
	
		
			
				|  |  |         uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         return success("上传成功", uploadVO);
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     *//**
 | 
	
		
			
				|  |  |     /*
 | 
	
		
			
				|  |  |      * base64上传图片
 | 
	
		
			
				|  |  |      * @param jsonData
 | 
	
		
			
				|  |  |      * @param jsonData,头像转化后的输入流
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      *//*
 | 
	
		
			
				|  |  |     public ObjEnvelop<UploadVO> uploadImages(@ApiParam(name = "jsonData", value = "头像转化后的输入流")
 | 
	
		
			
				|  |  |                                              @RequestBody String jsonData) throws Exception {
 | 
	
		
			
				|  |  |         if(jsonData == null){
 | 
	
		
			
				|  |  |             return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FILE_NULL), ObjEnvelop.class);
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public UploadVO uploadImages(String jsonData,String fastdfs_file_url) throws Exception {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(jsonData)){
 | 
	
		
			
				|  |  |             throw new FileInputStreamEmptyException("图片的base64文件文件流不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fastdfs_file_url)){
 | 
	
		
			
				|  |  |             throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String date = URLDecoder.decode(jsonData,"UTF-8");
 | 
	
		
			
				|  |  |         String[] fileStreams = date.split(",");
 | 
	
	
		
			
				|  | @ -174,8 +185,8 @@ public class FileUploadService {
 | 
	
		
			
				|  |  |         uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         //返回文件路径
 | 
	
		
			
				|  |  |         return success("上传成功", uploadVO);
 | 
	
		
			
				|  |  |     }*/
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 |