本文介绍如何使用限定条件下载OSS文件。

下载文件时,可以指定一个或多个限定条件。满足限定条件则下载,不满足则返回错误,不下载。可以使用的限定条件如下:

参数 描述
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方法获取。

以下代码用于限定条件下载:
public void testGetObjectWithHeaders() throws Exception {
        GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
        request.setRequestHeaders(...);
        

        OSSAsyncTask task = oss.asyncGetObject(request, getCallback);
        task.waitUntilFinished();

        GetObjectRequest rq = getCallback.request;
        GetObjectResult result = getCallback.result;
        
    }