| 
					
				 | 
			
			
				@ -0,0 +1,165 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.base.endpoint.common; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.node.ObjectNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.fastdfs.FastDFSUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.util.ErrorCodeUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.exception.code.BaseErrorCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.common.UploadVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ObjEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.Api; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.multipart.MultipartFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.ByteArrayInputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URLDecoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Base64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 文件上传不在微服务中处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author yeshijie on 2017/12/7. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RestController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RequestMapping(BaseRequestMapping.FileUpload.PREFIX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Api(tags = "文件上传相关操作", description = "文件上传相关操作") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class FileUploadController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private FastDFSUtil fastDFSHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${fastDFS.fastdfs_file_url}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String fastdfs_file_url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ErrorCodeUtil errorCodeUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM_IMG) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "文件流上传图片", notes = "文件流上传图片") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<UploadVO> uploadImg(@ApiParam(value = "文件", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                       @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 得到文件的完整名称  xxx.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fullName = file.getOriginalFilename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(fullName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FAIL_UPLOAD_FORMAT), ObjEnvelop.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到文件类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileType = fullName.substring(fullName.lastIndexOf(".") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(fileType)||!"jpg,jpeg,png".contains(fileType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FAIL_UPLOAD_FORMAT), ObjEnvelop.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileName = fullName.substring(0, fullName.lastIndexOf(".")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //上传到fastdfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), 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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM_ATTACHMENT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "文件流上传附件", notes = "文件流上传附件") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<UploadVO> uploadAttachment(@ApiParam(value = "文件", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                       @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 得到文件的完整名称  xxx.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fullName = file.getOriginalFilename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(fullName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.FileUpload.FAIL_UPLOAD_FORMAT), ObjEnvelop.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到文件类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileType = fullName.substring(fullName.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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileName = fullName.substring(0, fullName.lastIndexOf(".")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //上传到fastdfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), 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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "文件流上传文件", notes = "文件流上传文件") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<UploadVO> uploadStream(@ApiParam(value = "文件", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 得到文件的完整名称  xxx.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fullName = file.getOriginalFilename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到文件类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileType = fullName.substring(fullName.lastIndexOf(".") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileName = fullName.substring(0, fullName.lastIndexOf(".")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //上传到fastdfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), 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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STRING) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "base64上传图片",notes = "base64上传图片") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String date = URLDecoder.decode(jsonData,"UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] fileStreams = date.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String is = URLDecoder.decode(fileStreams[1],"UTF-8").replace(" ","+"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        byte[] in = Base64.getDecoder().decode(is); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String pictureName = fileStreams[0].substring(0,fileStreams[0].length()-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileExtension = pictureName.substring(pictureName.lastIndexOf(".") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String description = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if ((pictureName != null) && (pictureName.length() > 0)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            int dot = pictureName.lastIndexOf('.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ((dot > -1) && (dot < (pictureName.length()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                description = pictureName.substring(0, dot); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        InputStream inputStream = new ByteArrayInputStream(in); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode objectNode = fastDFSHelper.upload(inputStream, "png", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String groupName = objectNode.get("groupName").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String remoteFileName = objectNode.get("remoteFileName").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //解析返回的objectNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        UploadVO uploadVO = new UploadVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        uploadVO.setFileName(remoteFileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        uploadVO.setFileType(groupName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //返回文件路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return success("上传成功", uploadVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |