dengsixing 3 years ago
parent
commit
d4c3dbaab2

+ 5 - 0
4dkankan-common-utils/src/main/java/com/fdkankan/common/constant/ConstantFilePath.java

@@ -134,6 +134,11 @@ public class ConstantFilePath {
 
     public static final String SCENE_USER_PATH_V4 = SCENE_V4_PATH + "%S/user/";
 
+    /**
+     * 文件转换目录
+     */
+    public static final String FILE_CONVERT_PATH = BASE_PATH + "/fileConvert/";
+
 
 
 

+ 1 - 0
4dkankan-common-utils/src/main/java/com/fdkankan/common/constant/ErrorCode.java

@@ -172,6 +172,7 @@ public enum ErrorCode {
     FAILURE_CODE_8002(8002, "支付失败"),
     FAILURE_CODE_8003(8003, "开票金额超过范围"),
     FAILURE_CODE_8004(8004, "支付方式异常"),
+    FAILURE_CODE_8005(8005, "文件转换失败!"),
 
 
 

+ 21 - 0
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/CreateObjUtil.java

@@ -1,6 +1,7 @@
 package com.fdkankan.common.util;
 
 import cn.hutool.core.exceptions.ExceptionUtil;
+import cn.hutool.core.io.FileTypeUtil;
 import com.fdkankan.common.constant.ConstantFileName;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.proto.BigSceneProto;
@@ -231,6 +232,24 @@ public class CreateObjUtil {
 
 	}
 
+	public static void convertDamToLzmaByAbsolutePath(String path)throws Exception
+	{
+		try
+		{
+			String command = "lzma "+ path;
+			log.info("开始转换lzma");
+			callshell(command);
+			log.info("转换lzma完毕");
+		}
+		catch(Exception e)
+		{
+			StringWriter trace=new StringWriter();
+			e.printStackTrace(new PrintWriter(trace));
+			log.error(trace.toString());
+		}
+
+	}
+
 	public static void convertDamToLzma2(String folderName)throws Exception
 	{
 		try
@@ -613,6 +632,8 @@ public class CreateObjUtil {
 
 	public static void main(String[] args) throws Exception{
 		CreateObjUtil.convertTxtToVisionmodeldata("F:\\visiontest\\KJ-HXMNTDYs1E_3.txt", "F:\\visiontest\\vision.modeldata");
+//		String type = FileTypeUtil.getType(new File("F:\\visiontest\\KJ-HXMNTDYs1E_3.txt"));
+//		System.out.println(type);
 //		CreateObjUtil.convertTxtToDam("F:\\visiontest\\modeldata.txt", "F:\\visiontest\\dacf7dfa24ae47fab8fcebfe4dc41ab9_50k.dam");
 
 //		String text = "web:web";

+ 7 - 0
4dkankan-utils-fyun/pom.xml

@@ -13,6 +13,13 @@
 
 
     <dependencies>
+
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-common-utils</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>

+ 108 - 54
4dkankan-utils-fyun/src/main/java/com/fdkankan/fyun/oss/UploadToOssUtil.java

@@ -20,6 +20,7 @@ import com.amazonaws.services.s3.model.PutObjectRequest;
 import com.amazonaws.services.s3.model.S3Object;
 import com.amazonaws.services.s3.model.S3ObjectInputStream;
 import com.amazonaws.services.s3.model.S3ObjectSummary;
+import com.fdkankan.common.util.CreateObjUtil;
 import com.fdkankan.fyun.constant.StorageType;
 import com.qiniu.common.Zone;
 import com.qiniu.storage.Configuration;
@@ -84,6 +85,13 @@ public class UploadToOssUtil {
 	@Value("${local.path:/home/4dkankan}")
 	private String localPath;
 
+	/**
+	 * oss文件上传命令
+	 * 第一个参数是oss路径,要包含bucket名称
+	 * 第二个参数是本地文件路径
+	 */
+	private static final String UPLOAD_SH = "bash /opt/ossutil/upload.sh %s %s";
+
 	//上传的数据是byte[],key是上传后的文件名
 	public void upload(byte[] data,String key1) throws IOException{
 		log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , new String(data, "UTF-8"),key1,type);
@@ -115,6 +123,25 @@ public class UploadToOssUtil {
 				break;
 		}
 	}
+
+	/**
+	 * 通过脚本上传
+	 * @param filePath
+	 * @param key
+	 */
+	public void uploadBySh(String filePath, String key) {
+		String ossPath = this.bucket + "/" + key;
+		try {
+			String command = String.format(UploadToOssUtil.UPLOAD_SH, ossPath, filePath);
+			log.info("开始上传文件, ossPath:{}, srcPath:{}", ossPath, filePath);
+			CreateObjUtil.callshell(command);
+			log.info("上传文件完毕, ossPath:{}, srcPath:{}", ossPath, filePath);
+		} catch(Exception e) {
+			log.error("上传文件失败, ossPath:{}, srcPath:{}", ossPath, filePath);
+			log.error("上传文件失败", e);
+		}
+	}
+
 	public void uploadSdk(String filePath, String key1) {
 		log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath,key1,type);
 		switch (type){
@@ -147,12 +174,16 @@ public class UploadToOssUtil {
 		return 1;
 	}
 
-	public void deleteOss(String key1){
+	public void deleteOss(String objectName){
 		OSSClient ossClient = new OSSClient(point, key, secrey);
 		try {
-			ossClient.deleteObject(bucket, key1);
+			ossClient.deleteObject(bucket, objectName);
 		} catch (Exception e) {
-			e.printStackTrace();
+			log.error("OSS删除文件失败,key=" + objectName);
+		}finally {
+			if(ossClient != null){
+				ossClient.shutdown();
+			}
 		}
 	}
 
@@ -248,6 +279,7 @@ public class UploadToOssUtil {
 			ossClient.shutdown();
 		}
 	}
+
 	public void uploadAws(String filePath, String key1){
 		try{
 			uploadS3File(filePath, key1);
@@ -491,10 +523,10 @@ public class UploadToOssUtil {
 	/**
 	 * 删除单个文件
 	 *
-	 * @param filePath 文件路径[ eg: /head/xxxx.jpg ]
+	 * @param objectName 文件路径[ eg: /head/xxxx.jpg ]
 	 * @return
 	 */
-	public void deleteS3Object(String filePath) {
+	public void deleteS3Object(String objectName) {
 
 		/**
 		 * 创建s3对象
@@ -505,13 +537,18 @@ public class UploadToOssUtil {
 				.withRegion(Regions.EU_WEST_2)
 				.build();
 
-		if (filePath.startsWith("/")) {
-			filePath = filePath.substring(1);
+		if (objectName.startsWith("/")) {
+			objectName = objectName.substring(1);
 		}
 
 		try {
-			s3.deleteObject(s3bucket, filePath);
+			s3.deleteObject(s3bucket, objectName);
 		} catch (Exception e) {
+			log.error("s3删除文件失败,key="+objectName, e);
+		}finally {
+			if(s3 != null){
+				s3.shutdown();
+			}
 		}
 	}
 
@@ -596,29 +633,38 @@ public class UploadToOssUtil {
 	public List<String> listKeysFromAli(String sourcePath) {
 		List<String> keyList = new ArrayList<>();
 		OSSClient ossClient = new OSSClient(point, key, secrey);
-		boolean flag = true;
-		String nextMaker = null;
-		ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
-		//指定下一级文件
-		listObjectsRequest.setPrefix(sourcePath);
-		//设置分页的页容量
-		listObjectsRequest.setMaxKeys(200);
-		do
-		{
-			//获取下一页的起始点,它的下一项
-			listObjectsRequest.setMarker(nextMaker);
-			ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
-			List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
-			List<String> collect = objectSummaries.stream().map(summary -> {
-				return summary.getKey();
-			}).collect(Collectors.toList());
-			if(CollUtil.isNotEmpty(collect)){
-				keyList.addAll(collect);
+		try {
+			boolean flag = true;
+			String nextMaker = null;
+			ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
+			//指定下一级文件
+			listObjectsRequest.setPrefix(sourcePath);
+			//设置分页的页容量
+			listObjectsRequest.setMaxKeys(200);
+			do
+			{
+				//获取下一页的起始点,它的下一项
+				listObjectsRequest.setMarker(nextMaker);
+				ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
+				List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
+				List<String> collect = objectSummaries.stream().map(summary -> {
+					return summary.getKey();
+				}).collect(Collectors.toList());
+				if(CollUtil.isNotEmpty(collect)){
+					keyList.addAll(collect);
+				}
+				nextMaker = objectListing.getNextMarker();
+				//全部执行完后,为false
+				flag = objectListing.isTruncated();
+			} while (flag);
+		}catch (Exception e){
+			log.error("获取文件列表失败,path="+sourcePath, e);
+		}finally {
+			if(ossClient != null){
+				ossClient.shutdown();
 			}
-			nextMaker = objectListing.getNextMarker();
-			//全部执行完后,为false
-			flag = objectListing.isTruncated();
-		} while (flag);
+		}
+
 
 		ossClient.shutdown();
 
@@ -638,29 +684,34 @@ public class UploadToOssUtil {
 			.withRegion(Regions.EU_WEST_2)
 			.build();
 
-		boolean flag = true;
-		String nextMaker = null;
-		com.amazonaws.services.s3.model.ListObjectsRequest listObjectsRequest = new com.amazonaws.services.s3.model.ListObjectsRequest();
-		listObjectsRequest.setBucketName(this.bucket);
-		listObjectsRequest.setPrefix(sourcePath);
-		listObjectsRequest.setMaxKeys(200);
-
-		do{
-			listObjectsRequest.setMarker(nextMaker);
-			com.amazonaws.services.s3.model.ObjectListing objectListing = s3.listObjects(listObjectsRequest);
-			List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
-			List<String> collect =objectSummaries.stream().map(summary->{
-				return summary.getKey();
-			}).collect(Collectors.toList());
-			if(CollUtil.isNotEmpty(collect)){
-				keyList.addAll(collect);
+		try {
+			boolean flag = true;
+			String nextMaker = null;
+			com.amazonaws.services.s3.model.ListObjectsRequest listObjectsRequest = new com.amazonaws.services.s3.model.ListObjectsRequest();
+			listObjectsRequest.setBucketName(this.bucket);
+			listObjectsRequest.setPrefix(sourcePath);
+			listObjectsRequest.setMaxKeys(200);
+
+			do{
+				listObjectsRequest.setMarker(nextMaker);
+				com.amazonaws.services.s3.model.ObjectListing objectListing = s3.listObjects(listObjectsRequest);
+				List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
+				List<String> collect =objectSummaries.stream().map(summary->{
+					return summary.getKey();
+				}).collect(Collectors.toList());
+				if(CollUtil.isNotEmpty(collect)){
+					keyList.addAll(collect);
+				}
+				nextMaker = objectListing.getNextMarker();
+				flag = objectListing.isTruncated();
+			}while (flag);
+		}catch (Exception e){
+			log.error("获取文件列表失败,path="+sourcePath, e);
+		}finally {
+			if(s3 != null){
+				s3.shutdown();
 			}
-			nextMaker = objectListing.getNextMarker();
-			flag = objectListing.isTruncated();
-		}while (flag);
-
-		s3.shutdown();
-
+		}
 		return keyList;
 	}
 
@@ -880,9 +931,12 @@ public class UploadToOssUtil {
 			} catch (IOException e) {
 				log.error("读取scene.json文件流失败", e);
 			}
-			ossClient.shutdown();
 		}catch (Exception e){
-			log.error("oos找不到文件,文件路径:{}", objectName);
+			log.error("s3获取文件内容失败,key="+objectName, e);
+		}finally {
+			if(ossClient != null){
+				ossClient.shutdown();
+			}
 		}
 
 		return contentJson.toString();