全部产品
阿里云办公

限定条件下载

更新时间:2018-07-02 14:22:17

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

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

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

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 创建OSSClient实例。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
  11. // 设置限定条件。
  12. request.setModifiedSinceConstraint(new Date());
  13. // 下载OSS文件到本地文件。
  14. ossClient.getObject(request, new File("<yourLocalFile>"));
  15. // 关闭OSSClient。
  16. ossClient.shutdown();

ossClient.getObject和ossClient.downloadFile方法支持限定条件下载。