首页 > 解决方案 > S3上传String的用户元数据列表

问题描述

我目前正在使用 Java 进行 S3 上传,我将向文件添加一组用户元数据。我试图了解,如果我可以将字符串列表添加到用户元数据中的参数之一。

我当前的代码片段如下 -

ObjectMetadata objectMetadata = new ObjectMetadata();

Map<String, Object> userMetadata = new HashMap<String, Object>();

userMetadata.put("a", "a1");
userMetadata.put("b", "b1");

List<String> c = new ArrayList<String>();
c.add("c1");
c.add("c2");
userMetadata.put("c", c);

objectMetadata.setUserMetadata(userMetadata);

但是,我在“ objectMetadata.setUserMetadata(userMetadata); ”行收到编译时错误

标签: javalistamazon-web-servicesamazon-s3metadata

解决方案


setUserMetadata需要 a Map<String, String>,而不是Map<String, Object>你所拥有的 - 所以你不能直接在那里使用列表。例如,您可以加入它:

Map<String, String> userMetadata = new HashMap<>(); // Note the type!

userMetadata.put("a", "a1");
userMetadata.put("b", "b1");

List<String> c = new ArrayList<>();
c.add("c1");
c.add("c2");
userMetadata.put("c", String.join(",", c); // list is joined when added to the map

objectMetadata.setUserMetadata(userMetadata);

推荐阅读