瀏覽代碼

修改代码 上传回调

fuyu 6 年之前
父節點
當前提交
c77fe0bb70

+ 2 - 2
dicom_monitor/pom.xml

@@ -145,7 +145,7 @@
 	    	<version>2.8.3</version>
 	   	</dependency>
 	   	
-  	 	<dependency>
+  	 	<!-- <dependency>
 	      <groupId>org.dcm4che</groupId>
 	      <artifactId>dcm4che-core</artifactId>
 	      <version>5.15.0</version>
@@ -154,7 +154,7 @@
 	      <groupId>org.dcm4che.tool</groupId>
 	      <artifactId>dcm4che-tool-common</artifactId>
 	      <version>5.15.0</version>
-	    </dependency>
+	    </dependency> -->
 	</dependencies>
 
 </project>

+ 1 - 0
dicom_monitor/src/main/java/com/zskk/dicom/config/OSSConfig.java

@@ -6,4 +6,5 @@ public class OSSConfig {
 	public static String ACCESS_KEY_ID = "LTAImzRGKfWaL7Vi";
 	public static String ACCESS_KEY_SECRET = "GjWdd2cdHtbQkhhnhSxNbw0QChKD98";
 	public static String BUCKET_NAME = "zskk";
+	public static String ALIYUN_OSS_CALLBACK_URL = "http://api.aliyuoss.callback.pacsonline.cn/oss_callback";
 }

+ 125 - 0
dicom_monitor/src/main/java/com/zskk/dicom/oss/OSSFileAndCallbackHleper.java

@@ -0,0 +1,125 @@
+package com.zskk.dicom.oss;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.util.TextUtils;
+
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.common.utils.IOUtils;
+import com.aliyun.oss.model.Callback;
+import com.aliyun.oss.model.Callback.CalbackBodyType;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
+import com.zskk.dicom.config.NetCodeConfig;
+import com.zskk.dicom.config.OSSConfig;
+import com.zskk.dicom.response.BaseResponse;
+import com.zskk.dicom.response.ZskkResponseFactory;
+import com.zskk.dicom.response.bean.FileUploadChcekResponseBean;
+
+public class OSSFileAndCallbackHleper implements BaseOSSHleper {
+
+	private static class OSSHleperHoler {
+		private static OSSFileAndCallbackHleper INSTANCE = new OSSFileAndCallbackHleper();
+	}
+	public static OSSFileAndCallbackHleper getInstance() {
+		return OSSHleperHoler.INSTANCE;
+	}
+	private OSSClient instance;
+	private OSSFileAndCallbackHleper() {
+		instance = new OSSClient(OSSConfig.ENDPOINT, OSSConfig.ACCESS_KEY_ID, OSSConfig.ACCESS_KEY_SECRET);
+	}
+	@Override
+	public BaseResponse check(String filePath) {
+		BaseResponse exception = null;
+		if(TextUtils.isEmpty(filePath)) {
+			return NetCodeConfig.FILE_PATH_IS_NULL;
+		}
+		File file = new File(filePath);
+		if(!file.exists()) {
+			return NetCodeConfig.FILE_IS_NOT_FOUND;
+		}
+		if(!file.isFile()) {
+			return NetCodeConfig.FILE_IS_NOT_FILE;
+		}
+		FileInputStream fis = null;
+		String md5 = null;
+		Exception error = null;
+		try {
+			fis = new FileInputStream(file);
+			md5 = DigestUtils.md5Hex(IOUtils.readStreamAsByteArray(fis));
+			fis.close();
+		} catch (IOException e) {
+			error = e;
+		} 
+		if(error != null) {
+			return NetCodeConfig.FILE_RUNTIME.setError(error);
+		}
+		boolean isExist = instance.doesObjectExist(OSSConfig.BUCKET_NAME, md5);
+		if(isExist) {
+			return NetCodeConfig.FILE_ALIOSS_FILE_ALREADY;
+		}
+		return ZskkResponseFactory.getInstance().generateSuccess().setData(new FileUploadChcekResponseBean(md5,file));
+	}
+	
+	@Override
+	public BaseResponse upload(String filePath) {
+		BaseResponse<FileUploadChcekResponseBean> response = check(filePath);
+		if(response.isError()) {
+			return response;
+		}
+		FileUploadChcekResponseBean data = response.getData();
+		String md5 = data.filename;
+		File file = data.file;
+		Exception error = null;
+		
+//		try {
+//			instance.putObject(OSSConfig.BUCKET_NAME, md5, file);
+//		} catch (Exception e) {
+//			error = e;
+//		} finally {
+//			if(instance != null) {
+//				instance.shutdown();
+//			}
+//		}
+		
+		PutObjectRequest putObjectRequest = new PutObjectRequest(OSSConfig.BUCKET_NAME, md5, file);
+
+		// 上传回调参数。
+		Callback callback = new Callback();
+		callback.setCallbackUrl(OSSConfig.ALIYUN_OSS_CALLBACK_URL + "?md5=" + md5);
+		// 设置回调请求消息头中Host的值,如oss-cn-hangzhou.aliyuncs.com。
+//		callback.setCallbackHost(OSSConfig.ENDPOINT);
+		// 设置发起回调时请求body的值。
+		callback.setCallbackBody("{\\\"mimeType\\\":1,\\\"size\\\":2}");
+		// 设置发起回调请求的Content-Type。
+		callback.setCalbackBodyType(CalbackBodyType.JSON);
+		// 设置发起回调请求的自定义参数,由Key和Value组成,Key必须以x:开始。
+		callback.addCallbackVar("x:url-md5", "http://zskk.oss-cn-beijing.aliyuncs.com/" + md5);
+//		callback.addCallbackVar("x:var2", "value2");
+		putObjectRequest.setCallback(callback);
+
+		PutObjectResult putObjectResult = instance.putObject(putObjectRequest);
+
+		// 读取上传回调返回的消息内容。
+		byte[] buffer = new byte[1024];
+		try {
+			putObjectResult.getCallbackResponseBody().read(buffer);
+			putObjectResult.getCallbackResponseBody().close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
+		
+
+		// 关闭OSSClient。
+		instance.shutdown();
+		if(error != null) {
+			return NetCodeConfig.FILE_ALIOSS_UPLOAD.setError(error);
+		}
+		return ZskkResponseFactory.getInstance().generateSuccess();
+	}
+}

+ 2 - 2
dicom_monitor/src/main/java/com/zskk/dicom/oss/OSSFileHleper.java

@@ -12,6 +12,7 @@ import org.apache.http.util.TextUtils;
 
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.common.utils.IOUtils;
+import com.aliyun.oss.model.PutObjectRequest;
 import com.aliyun.oss.model.PutObjectResult;
 import com.zskk.dicom.config.NetCodeConfig;
 import com.zskk.dicom.config.OSSConfig;
@@ -70,7 +71,6 @@ public class OSSFileHleper implements BaseOSSHleper {
 	@Override
 	public BaseResponse upload(String filePath) {
 		BaseResponse<FileUploadChcekResponseBean> response = check(filePath);
-		System.out.println(response.getCode());
 		if(response.isError()) {
 			return response;
 		}
@@ -92,4 +92,4 @@ public class OSSFileHleper implements BaseOSSHleper {
 		}
 		return ZskkResponseFactory.getInstance().generateSuccess();
 	}
-}
+}

+ 2 - 1
dicom_monitor/src/test/java/dicom_monitor/OSSTest.java

@@ -1,11 +1,12 @@
 package dicom_monitor;
 
+import com.zskk.dicom.oss.OSSFileAndCallbackHleper;
 import com.zskk.dicom.oss.OSSFileHleper;
 import com.zskk.dicom.response.BaseResponse;
 
 public class OSSTest {
 	public static void main(String[] args) {
-		BaseResponse response = OSSFileHleper.getInstance().upload("/Users/fuyu/Desktop/test/test");
+		BaseResponse response = OSSFileAndCallbackHleper.getInstance().upload("/Users/fuyu/Desktop/image/2");
 		System.out.println(response.getMsg());
 		System.out.println(response.getError());
 	}