diff --git a/src/main/java/com/qiniu/storage/BucketManager.java b/src/main/java/com/qiniu/storage/BucketManager.java index 39fd662b5..c8734c6f1 100644 --- a/src/main/java/com/qiniu/storage/BucketManager.java +++ b/src/main/java/com/qiniu/storage/BucketManager.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Iterator; +import java.util.Map; /** * 主要涉及了空间资源管理及批量操作接口的实现,具体的接口规格可以参考 @@ -194,6 +195,26 @@ public Response changeMime(String bucket, String key, String mime) return rsPost(bucket, path, null); } + /** + * 修改文件的元数据 + * + * @param bucket 空间名称 + * @param key 文件名称 + * @param headers 需要修改的文件元数据 + * @throws QiniuException + * @link https://developer.qiniu.com/kodo/api/1252/chgm + */ + public Response changeHeaders(String bucket, String key, Map headers) + throws QiniuException { + String resource = encodedEntry(bucket, key); + String path = String.format("/chgm/%s", resource); + for (String k : headers.keySet()) { + String encodedMetaValue = UrlSafeBase64.encodeToString(headers.get(k)); + path = String.format("%s/%s/%s", path, k, encodedMetaValue); + } + return rsPost(bucket, path, null); + } + //存储类型 public enum StorageType { diff --git a/src/test/java/test/com/qiniu/storage/BucketTest.java b/src/test/java/test/com/qiniu/storage/BucketTest.java index 10ff12c29..101e79e6f 100644 --- a/src/test/java/test/com/qiniu/storage/BucketTest.java +++ b/src/test/java/test/com/qiniu/storage/BucketTest.java @@ -13,10 +13,8 @@ import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; @SuppressWarnings("ConstantConditions") public class BucketTest extends TestCase { @@ -267,6 +265,30 @@ public void testChangeMime() { } } + @Test + public void testChangeHeaders() { + List cases = new ArrayList(); + cases.add(new String[]{TestConfig.testBucket_z0, TestConfig.testKey_z0}); + cases.add(new String[]{TestConfig.testBucket_na0, TestConfig.testKey_na0}); + + for (String[] icase : cases) { + String bucket = icase[0]; + String key = icase[1]; + try { + Map headers = new HashMap<>(); + Date d = new Date(); + SimpleDateFormat dateFm = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.ENGLISH); + System.out.println(dateFm.format(d)); + headers.put("x-qn-meta-!Content-Type", "image/png"); + headers.put("x-qn-meta-!Last-Modifie", dateFm.format(d)); + bucketManager.changeHeaders(bucket, key, headers); + } catch (QiniuException e) { + fail(bucket + ":" + key + "==> " + e.response.toString()); + } + } + } + + @Test public void testPrefetch() { String[] buckets = new String[]{TestConfig.testBucket_z0, TestConfig.testBucket_na0};