Skip to content

Commit ce7cfa3

Browse files
authored
Merge pull request #359 from sxci/fix_param_filter
support x-qn-meta-<key> [ci skip]
2 parents a2b7da7 + 91fbe5d commit ce7cfa3

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

src/main/java/com/qiniu/storage/UploadManager.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
public final class UploadManager {
1919
private final Client client;
2020
private final Recorder recorder;
21-
private Configuration configuration;
21+
private Configuration configuration;
2222

2323
/**
2424
* 构建一个非断点续传的上传对象
@@ -60,6 +60,31 @@ private static void checkArgs(final String key, byte[] data, File f, String toke
6060
}
6161
}
6262

63+
/**
64+
* 过滤用户自定义参数,只有参数名以<code>x:</code>开头的参数才会被使用
65+
*
66+
* @param params 待过滤的用户自定义参数
67+
* @return 过滤后的用户自定义参数
68+
*/
69+
private static StringMap filterParam(StringMap params) {
70+
final StringMap ret = new StringMap();
71+
if (params == null) {
72+
return ret;
73+
}
74+
params.forEach(new StringMap.Consumer() {
75+
@Override
76+
public void accept(String key, Object value) {
77+
if (value == null) {
78+
return;
79+
}
80+
String val = value.toString();
81+
if ((key.startsWith("x:") || key.startsWith("x-qn-meta-")) && !val.equals("")) {
82+
ret.put(key, val);
83+
}
84+
}
85+
});
86+
return ret;
87+
}
6388

6489
/**
6590
* 上传字节数组
@@ -90,6 +115,7 @@ public Response put(final byte[] data, final String key, final String token, Str
90115
if (mime == null) {
91116
mime = Client.DefaultMime;
92117
}
118+
params = filterParam(params);
93119
return new FormUploader(client, token, key, data, params, mime, checkCrc, configuration).upload();
94120
}
95121

@@ -145,6 +171,7 @@ public Response put(File file, String key, String token, StringMap params,
145171
if (mime == null) {
146172
mime = Client.DefaultMime;
147173
}
174+
params = filterParam(params);
148175
long size = file.length();
149176
if (size <= configuration.putThreshold) {
150177
return new FormUploader(client, token, key, file, params, mime, checkCrc, configuration).upload();
@@ -172,6 +199,7 @@ public void asyncPut(final byte[] data, final String key, final String token, St
172199
if (mime == null) {
173200
mime = Client.DefaultMime;
174201
}
202+
params = filterParam(params);
175203
new FormUploader(client, token, key, data, params, mime, checkCrc, configuration).asyncUpload(handler);
176204
}
177205

0 commit comments

Comments
 (0)