下載檔案時,可以指定一個或多個限定條件。滿足限定條件則下載,不滿足則返回錯誤,不下載。可以使用的限定條件如下:
參數 | 描述 |
---|---|
If-Modified-Since | 如果指定的時間早於實際修改時間,則正常傳輸檔案,否則返回錯誤(304 Not modified)。 |
If-Unmodified-Since | 如果指定的時間等於或者晚於檔案實際修改時間,則正常傳輸檔案,否則返回錯誤(412 Precondition failed)。 |
If-Match | 如果指定的ETag和OSS檔案的ETag匹配,則正常傳輸檔案,否則返回錯誤(412 Precondition failed)。 |
If-None-Match | 如果指定的ETag和OSS檔案的ETag不匹配,則正常傳輸檔案,否則返回錯誤(304 Not modified)。 |
If-Modified-Since和If-Unmodified-Since可以同時存在。If-Match和If-None-Match可以同時存在。
ETag可以通過ossClient.getObjectMeta方法獲取。
以下代碼用於限定條件下載:
// 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>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
// 設定限定條件。
request.setModifiedSinceConstraint(new Date());
// 下載OSS檔案到本地檔案。
ossClient.getObject(request, new File("<yourLocalFile>"));
// 關閉OSSClient。
ossClient.shutdown();
ossClient.getObject和ossClient.downloadFile方法支援限定條件下載。