Skip to content

Commit 89ccee4

Browse files
committed
feat: extend asynclistObject support delimiter|marker|maxkeys to list object in Android
1 parent 0b4122f commit 89ccee4

File tree

5 files changed

+89
-48
lines changed

5 files changed

+89
-48
lines changed

Example/Component/ObjectManager.js

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,51 @@ import { styles } from '../CSS/global.js'
1616
export class ObjectManager extends Component {
1717
render() {
1818
return(
19-
<View style={styles.item}>
20-
<Text style={styles.description}>管理文件</Text>
21-
<View style={styles.detailitem}>
22-
<View style={styles.button}>
23-
<Button style={styles.button}
24-
onPress={this.clickHandle.bind(this,"asyncHeadObject")}
25-
title="asyncHeadObject"
26-
color="#841584"
27-
/>
28-
</View>
19+
<View style={styles.item}>
20+
<Text style={styles.description}>管理文件</Text>
21+
<View style={styles.detailitem}>
22+
<View style={styles.button}>
23+
<Button style={styles.button}
24+
onPress={this.clickHandle.bind(this,"asyncHeadObject")}
25+
title="asyncHeadObject"
26+
color="#841584"
27+
/>
28+
</View>
2929

30-
<View style={styles.button}>
31-
<Button style={styles.button}
32-
onPress={this.clickHandle.bind(this,"asyncListObjects")}
33-
title="asyncListObjects"
34-
color="#841584"
35-
/>
36-
</View>
30+
<View style={styles.button}>
31+
<Button style={styles.button}
32+
onPress={this.clickHandle.bind(this,"asyncListObjects")}
33+
title="asyncListObjects"
34+
color="#841584"
35+
/>
36+
</View>
3737

38-
<View style={styles.button}>
39-
<Button style={styles.button}
40-
onPress={this.clickHandle.bind(this,"asyncCopyObject")}
41-
title="asyncCopyObject"
42-
color="#841584"
43-
/>
44-
</View>
38+
<View style={styles.button}>
39+
<Button style={styles.button}
40+
onPress={this.clickHandle.bind(this,"asyncCopyObject")}
41+
title="asyncCopyObject"
42+
color="#841584"
43+
/>
44+
</View>
4545

46-
<View style={styles.button}>
47-
<Button style={styles.button}
48-
onPress={this.clickHandle.bind(this,"doesObjectExist")}
49-
title="doesObjectExist"
50-
color="#841584"
51-
/>
52-
</View>
46+
<View style={styles.button}>
47+
<Button style={styles.button}
48+
onPress={this.clickHandle.bind(this,"doesObjectExist")}
49+
title="doesObjectExist"
50+
color="#841584"
51+
/>
52+
</View>
5353

54-
<View style={styles.button}>
55-
<Button style={styles.button}
56-
onPress={this.clickHandle.bind(this,"asyncDeleteObject")}
57-
title="asyncDeleteObject"
58-
color="#841584"
59-
/>
54+
<View style={styles.button}>
55+
<Button style={styles.button}
56+
onPress={this.clickHandle.bind(this,"asyncDeleteObject")}
57+
title="asyncDeleteObject"
58+
color="#841584"
59+
/>
60+
</View>
6061
</View>
6162
</View>
62-
</View>
63-
)
63+
)
6464
}
6565
clickHandle(e) {
6666
switch(e) {
@@ -74,7 +74,9 @@ export class ObjectManager extends Component {
7474

7575
case "asyncListObjects" : {
7676
console.log("asyncListObjects")
77-
AliyunOSS.asyncListObjects('luozhang002').then((e) => {
77+
AliyunOSS.asyncListObjects('luozhang002',{
78+
prefix:'xxxx'
79+
}).then((e) => {
7880
console.log(e)
7981
}).catch((e)=>{
8082
console.log(e)
@@ -108,5 +110,4 @@ export class ObjectManager extends Component {
108110
default :break;
109111
}
110112
}
111-
112113
}

README-CN.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,21 @@ AliyunOSS.asyncListBuckets().then((e) => {
334334
```
335335
### asyncListObjects
336336

337+
列举指定bucket下的objects
338+
339+
parameters:
340+
341+
- name {String} bucket name
342+
- options {Object}
343+
- [delimiter] {String} 用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素: CommonPrefixes。
344+
- [marker] {String} 设定结果从marker之后按字母排序的第一个开始返回。
345+
- [maxkeys] {Number} 限定此次返回object的最大数,如果不设定,默认为100,maxkeys取值不能大于1000。
346+
- [prefix] {String} 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。
347+
337348
```
338-
AliyunOSS.asyncListObjects('luozhang002').then((e)=>{
349+
AliyunOSS.asyncListObjects('luozhang002',{
350+
prefix:'xxxx'
351+
}).then((e)=>{
339352
console.log(e)
340353
}).catch((e)=>{
341354
console.log(e)

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,20 @@ AliyunOSS.asyncListBuckets().then((e) => {
344344
```
345345
### asyncListObjects
346346

347+
list objects in some conditions
348+
349+
parameters:
350+
351+
- name {String} bucket name
352+
- options {Object}
353+
- [delimiter] {String}
354+
- [prefix] {String} search buckets using `prefix` key
355+
- [marker] {String} search start from `marker`, including `marker` key
356+
- [max-keys] {String|Number} max buckets, default is `100`, limit to `1000`
347357
```
348-
AliyunOSS.asyncListObjects('luozhang002').then((e)=>{
358+
AliyunOSS.asyncListObjects('luozhang002', {
359+
prefix:'xxxx'
360+
}).then((e)=>{
349361
console.log(e)
350362
}).catch((e)=>{
351363
console.log(e)

android/src/main/java/com/reactlibrary/AliyunObjectManager.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,27 @@ public void doesObjectExist(String bucketName,String objectKey,final Promise pro
9292
/**
9393
* asyncListObjects
9494
* @param bucketName
95-
* @param prefix
95+
* @param opitons {delimiter|prefix|marker|maxkeys}
9696
* @param promise
9797
*/
98-
public void asyncListObjects(String bucketName,String prefix,final Promise promise) {
98+
public void asyncListObjects(String bucketName, ReadableMap options, final Promise promise) {
9999
ListObjectsRequest listObjects = new ListObjectsRequest(bucketName);
100-
listObjects.setPrefix(prefix);
100+
101+
if(options.hasKey("prefix")) {
102+
listObjects.setPrefix(options.getString("prefix"));
103+
}
104+
105+
if(options.hasKey("delimiter")) {
106+
listObjects.setDelimiter(options.getString("delimiter"));
107+
}
108+
109+
if(options.hasKey("marker")) {
110+
listObjects.setMarker(options.getString("delimiter"));
111+
}
112+
113+
if(options.hasKey("maxkeys")) {
114+
listObjects.setMaxKeys(options.getInt(String.valueOf(options.getInt("maxkeys"))));
115+
}
101116

102117
// set success 、set fail 、set async request
103118
OSSAsyncTask task = mOSS.asyncListObjects(listObjects, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {

android/src/main/java/com/reactlibrary/RNAliyunOssModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,8 @@ public void asyncHeadObject(String bucketName,String objectKey,final Promise pro
332332
* @param promise
333333
*/
334334
@ReactMethod
335-
public void asyncListObjects(String bucketName,String prefix,final Promise promise) {
336-
mObjectManager.asyncListObjects(bucketName, prefix, promise);
335+
public void asyncListObjects(String bucketName,ReadableMap options,final Promise promise) {
336+
mObjectManager.asyncListObjects(bucketName, options, promise);
337337
}
338338

339339
/**

0 commit comments

Comments
 (0)