下载文件(Object)时,可以指定一个或多个限定条件。满足限定条件则下载,条件不满足则返回错误且不会触发下载行为。

限定条件

OSS支持的限定条件如下:

说明
  • If-Modified-Since和If-Unmodified-Since可以同时存在。If-Match和If-None-Match也可以同时存在。
  • 您可以通过ossClient.getObjectMeta方法获取ETag。
参数描述
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)。

示例代码

以下代码用于限定条件下载。

public void testGetObjectWithHeaders() throws Exception {
        // 构造下载文件请求。
        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
        GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");
        request.setRequestHeaders(...);


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

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

    }

相关文档

  • 关于限定条件下载的完整示例代码,请参见GitHub示例
  • 关于限定条件下载的API接口说明,请参见GetObject