以下代碼用於上傳回調(callback):
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 您的回調伺服器位址,如http://oss-demo.aliyuncs.com:23450或http://127.0.0.1:9090。
String callbackUrl = "<yourCallbackServerUrl>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName,new ByteArrayInputStream(content.getBytes()));
// 上傳回調參數。
Callback callback = new Callback();
callback.setCallbackUrl(callbackUrl);
// 設定回調請求消息頭中Host的值,如oss-cn-hangzhou.aliyuncs.com。
callback.setCallbackHost("oss-cn-hangzhou.aliyuncs.com");
// 設定發起回調時請求body的值。
callback.setCallbackBody("{\\\"mimeType\\\":${mimeType},\\\"size\\\":${size}}");
// 設定發起回調請求的Content-Type。
callback.setCalbackBodyType(CallbackBodyType.JSON);
// 設定發起回調請求的自訂參數,由Key和Value組成,Key必須以x:開始。
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
putObjectRequest.setCallback(callback);
PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
// 讀取上傳回調返回的消息內容。
byte[] buffer = new byte[1024];
putObjectResult.getCallbackResponseBody().read(buffer);
// 資料讀取完成後,獲取的流必須關閉,否則會造成連接泄漏,導致請求無連接可用,程式無法正常工作。
putObjectResult.getCallbackResponseBody().close();
// 關閉OSSClient。
ossClient.shutdown();