| 
					
				 | 
			
			
				@@ -0,0 +1,136 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.yonge.cooleshow.biz.dal.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.FileInputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.FileNotFoundException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.FileOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.io.FileUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.io.IOUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.annotation.Async; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.entity.UploadReturnBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.toolset.thirdparty.storage.StoragePluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.toolset.thirdparty.storage.provider.KS3StoragePlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.toolset.utils.upload.UploadUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/**  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 上传工具服务层实现类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class UploadFileService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private StoragePluginContext storagePluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 最大上传大小,单位kb */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Value("${common.upload.maxSize:153600}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private int maxSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 支持的扩展名 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Value("${common.upload.supportExtensions:jpg,jpeg,gif,png,mp3,mid,midi,aac,m4a,mp4,xml,xlsx,xls,doc,docx,txt,pdf,psd,eps,rar,zip}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private String supportExtensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 文件根目录 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Value("/var/tmp/") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private String fileRoot; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public UploadReturnBean uploadFile(InputStream in, String ext) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		UploadReturnBean uploadReturn = new UploadReturnBean("", false, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String fileName = UploadUtil.getFileName(ext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String supportType = supportExtensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!UploadUtil.validateImgFile(ext, supportType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uploadReturn.setMessage("上传图片格式错误,目前只支持" + supportType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String root = fileRoot; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isBlank(root)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uploadReturn.setMessage("上传临时目录没有配置"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String staticFloder = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String folder = UploadUtil.getFileFloder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String filePath = UploadUtil.getFilePath(root, staticFloder, folder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		File file = uploadFile(in, filePath, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (maxSize > 0 && maxSize < file.length() / 1024) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			FileUtils.deleteQuietly(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uploadReturn.setMessage("超出允许的大小(" + (maxSize / 1024) + "M)限制"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//String url = storagePlugin.uploadFile(staticFloder + folder, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FileUtils.deleteQuietly(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		uploadReturn.setStatus(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		uploadReturn.setUrl(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public UploadReturnBean uploadImHistoryMsgFile(File msgFile) throws FileNotFoundException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		InputStream in = new FileInputStream(msgFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		UploadReturnBean uploadReturn = new UploadReturnBean("", false, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String fileName = UploadUtil.getFileName(msgFile.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String root = fileRoot + "im_history_msg/"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isBlank(root)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uploadReturn.setMessage("上传临时目录没有配置"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String staticFloder = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String folder = UploadUtil.getFileFloder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String filePath = UploadUtil.getFilePath(root, staticFloder, folder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		File file = uploadFile(in, filePath, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FileUtils.deleteQuietly(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		uploadReturn.setStatus(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		uploadReturn.setUrl(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return uploadReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void setMaxSize(int maxSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.maxSize = maxSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * 上传文件的工具方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private File uploadFile(InputStream inputStream, String filePath, String fileName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		File file = new File(filePath + "/" + fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!file.getParentFile().exists()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				file.getParentFile().mkdirs(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			FileOutputStream fos = new FileOutputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			IOUtils.copy(inputStream, fos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!file.exists() || file.length() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("图片上传出现错误,请重新上传"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("图片上传失败", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			IOUtils.closeQuietly(inputStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return file; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |