Skip to content

Commit c045cd4

Browse files
authored
Merge pull request #488 from qiniu/neiko
Neiko - example for issue
2 parents 2e690b0 + 5658eca commit c045cd4

File tree

4 files changed

+199
-5
lines changed

4 files changed

+199
-5
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ JDK 7 及以上
3030
```Java
3131
import com.qiniu.storage.UploadManager;
3232
import com.qiniu.util.Auth;
33+
import com.qiniu.storage.Configuration;
3334
import com.qiniu.http.Response;
3435
...
35-
UploadManager uploadManager = new UploadManager()
36+
Configuration cfg = new Configuration();
37+
UploadManager uploadManager = new UploadManager(cfg);
3638
Auth auth = Auth.create(accessKey, secretKey);
3739
String token = auth.uploadToken(bucketName);
3840
Response r = upManager.put("hello world".getBytes(), "yourkey", token);

examples/QNMetaDemo.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import com.qiniu.common.QiniuException;
2+
import com.qiniu.http.Client;
3+
import com.qiniu.http.Response;
4+
import com.qiniu.util.Auth;
5+
import com.qiniu.util.StringMap;
6+
import com.qiniu.util.UrlSafeBase64;
7+
8+
import java.util.HashMap;
9+
import java.util.Iterator;
10+
import java.util.Map;
11+
12+
/**
13+
* 自定义文件元信息demo(x-qn-meta-*)
14+
*
15+
* 接口
16+
* POST /setmeta/<EncodedEntryURI>[/<x-qn-meta-MetaKey>/<EncodedMetaValue>][/cond/Encoded(condKey1=condVal1&condKey2=condVal2)]
17+
* Host: rs-<region>.qiniu.com
18+
* Content-Type: application/x-www-form-urlencoded
19+
* Authorization: Qbox 鉴权
20+
*
21+
* 注意:
22+
* meta-key,key不能设置为中文,不允许为空;
23+
* 新的metas会完全替换掉以前的metas,注意, 是完全覆盖;
24+
* 如果请求url中没有 [<x-qn-meta-MetaKey>/<EncodedMetaValue>],则表示要删除所有metas;
25+
*
26+
*/
27+
public class QNMetaDemo {
28+
//设置好账号的ACCESS_KEY和SECRET_KEY
29+
private static final String ACCESS_KEY = "填写你们自己的AK";
30+
private static final String SECRET_KEY = "填写你们自己的SK";
31+
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
32+
33+
private Client client = new Client();
34+
private String bucketName;
35+
private String rsHost;
36+
37+
{
38+
bucketName = "填写你们自己的存储空间";
39+
//设置存储区域rs域名,华东z0 华北z1 华南z2
40+
rsHost = "rs-z2.qiniu.com";
41+
}
42+
43+
public static void main(String[] args) throws Exception {
44+
QNMetaDemo qnMetaDemo = new QNMetaDemo();
45+
//需要设置自定义meta的空间文件名称
46+
String key = "1.mp4";
47+
//设置自定义的meta头部,注意,每次调用该接口,是直接覆盖meta,不是追加meta
48+
HashMap<String, String> metaKeyVal = new HashMap<>();
49+
metaKeyVal.put("eng1", "qiniu");
50+
metaKeyVal.put("eng2", "七牛");
51+
boolean result = qnMetaDemo.setMeta(qnMetaDemo.bucketName, key, metaKeyVal);
52+
if(result){
53+
System.out.println("done");
54+
}
55+
}
56+
57+
/**
58+
* @param bucket 存储空间名称
59+
* @param key 存储空间的文件名称
60+
* @param headers 自定义的请求头 key - val map
61+
* @return true or false
62+
* @throws QiniuException
63+
*/
64+
public boolean setMeta(String bucket, String key, Map<String, String> headers) throws QiniuException {
65+
String resource = UrlSafeBase64.encodeToString(bucket.concat(":").concat(key));
66+
String path = String.format("/setmeta/%s", resource);
67+
String k;
68+
String encodedMetaValue;
69+
for(Iterator var6 = headers.keySet().iterator(); var6.hasNext(); path = String.format("%s/x-qn-meta-%s/%s", path, k, encodedMetaValue)) {
70+
k = (String)var6.next();
71+
encodedMetaValue = UrlSafeBase64.encodeToString((String)headers.get(k));
72+
}
73+
//接口请求地址
74+
String url = String.format("https://%s%s", rsHost, path);
75+
System.out.println(url);
76+
Response res = this.post(url);
77+
if (res.statusCode != 200) {
78+
return false;
79+
} else {
80+
return true;
81+
}
82+
}
83+
84+
private Response post(String url) throws QiniuException {
85+
StringMap headers = this.auth.authorization(url);
86+
return this.client.post(url, null, headers, "application/x-www-form-urlencoded");
87+
}
88+
}

examples/ResourcesCensor.java

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
import java.util.HashMap;
1010
import java.util.Map;
1111

12+
/**
13+
* 内容安全审核 demo
14+
* ImageCensor 图片内容安全审核,同步处理,不需要查询处理结果
15+
* VideoCensor 视频内容安全审核,异步处理,需要查询处理结果,返回处理任务ID
16+
* getVideoCensorResultByJobID 根据视频内容审核任务ID,查询审核结果
17+
*/
1218
public class ResourcesCensor {
1319
//设置好账号的ACCESS_KEY和SECRET_KEY
1420
private static final String ACCESS_KEY = "填写你们自己的ak";
@@ -20,9 +26,16 @@ public static void main(String args[]) {
2026
ResourcesCensor resourcesCensor = new ResourcesCensor();
2127
String result;
2228
try {
23-
result = resourcesCensor.ImageCensor();
24-
//result = resourcesCensor.VideoCensor();
25-
System.out.printf(result);
29+
//result = resourcesCensor.ImageCensor();
30+
result = resourcesCensor.VideoCensor();
31+
System.out.println(result);
32+
33+
/* 只有视频审核才会返回jobID */
34+
Gson gson = new Gson();
35+
Map<String, String> jobMap = new HashMap();
36+
String jobID = (String) gson.fromJson(result, jobMap.getClass()).get("job");
37+
String videoCensorResult = resourcesCensor.getVideoCensorResultByJobID(jobID);
38+
System.out.println(videoCensorResult);
2639
} catch (QiniuException e) {
2740
e.printStackTrace();
2841
}
@@ -88,13 +101,35 @@ public String VideoCensor() throws QiniuException {
88101
return post(url, bodyByte);
89102
}
90103

104+
/**
105+
* 查询视频审核内容结果
106+
* 参考
107+
* https://developer.qiniu.com/censor/api/5620/video-censor#4
108+
* @param ID : 视频审核返回的 job ID
109+
*
110+
*/
111+
public String getVideoCensorResultByJobID(String ID){
112+
String url = "http://ai.qiniuapi.com/v3/jobs/video/".concat(ID);
113+
String accessToken = (String) auth.authorizationV2(url).get("Authorization");
114+
StringMap headers = new StringMap();
115+
headers.put("Authorization", accessToken);
116+
117+
try {
118+
com.qiniu.http.Response resp = client.get(url,headers);
119+
return resp.bodyString();
120+
} catch (Exception e) {
121+
e.printStackTrace();
122+
}
123+
return null;
124+
}
125+
91126
private String post(String url, byte[] body) throws QiniuException {
92127
String accessToken = (String) auth.authorizationV2(url, "POST", body, "application/json")
93128
.get("Authorization");
94129

95130
StringMap headers = new StringMap();
96131
headers.put("Authorization", accessToken);
97-
132+
98133
com.qiniu.http.Response resp = client.post(url, body, headers, Client.JsonMime);
99134
return resp.bodyString();
100135
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import com.qiniu.common.QiniuException;
2+
import com.qiniu.http.Response;
3+
import com.qiniu.storage.Configuration;
4+
import com.qiniu.storage.Region;
5+
import com.qiniu.storage.UploadManager;
6+
import com.qiniu.util.Auth;
7+
import com.qiniu.util.StringMap;
8+
9+
/**
10+
* 设置自定义变量上传并接收自定义变量 demo
11+
*
12+
* 自定义变量需要以 x: 开头, 携带自定义变量上传参考文档
13+
* https://developer.qiniu.com/kodo/manual/1235/vars#2
14+
*
15+
* 接收自定义变量参考上传策略文档 -- returnBody
16+
* https://developer.qiniu.com/kodo/manual/1206/put-policy
17+
*
18+
* 服务端具体用法实例参考 UploadBySelfDefiningParam.upload()
19+
*/
20+
public class UploadBySelfDefiningParam {
21+
22+
private static final String ACCESS_KEY = "设置好你们自己的AK";
23+
private static final String SECRET_KEY = "设置好你们自己的SK";
24+
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
25+
26+
private Configuration cfg;
27+
private UploadManager uploadManager;
28+
private Region region;
29+
private String bucket;
30+
31+
{
32+
bucket = "设置你们自己的上传空间名称";
33+
//指定存储空间所在区域,华北region1,华南region2 ,华东 region0
34+
region = Region.region1();
35+
//初始化cfg实例,可以指定上传区域,也可以创建无参实例 , cfg = new Configuration();
36+
cfg = new Configuration(region);
37+
//是否指定https上传,默认true
38+
//cfg.useHttpsDomains=false;
39+
//构建 uploadManager 实例
40+
uploadManager = new UploadManager(cfg);
41+
}
42+
43+
public static void main(String args[]) throws Exception {
44+
UploadBySelfDefiningParam up = new UploadBySelfDefiningParam();
45+
up.upload();
46+
}
47+
48+
public void upload() throws QiniuException {
49+
//设置上传后的文件名称
50+
String key = "qiniu_test.jpg";
51+
//上传策略
52+
StringMap policy = new StringMap();
53+
//自定义上传后返回内容,返回自定义参数,需要设置 x:参数名称
54+
policy.put("returnBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"fname\":\"$(x:fname)\",\"age\",$(x:age)}");
55+
//生成上传token
56+
String upToken = auth.uploadToken(bucket, key, 3600, policy);
57+
58+
//上传自定义参数,自定义参数名称需要以 x:开头
59+
StringMap params = new StringMap();
60+
params.put("x:fname","123.jpg");
61+
params.put("x:age",20);
62+
String localFilePath = "/Users/mini/Downloads/qiniu_test.jpg";
63+
64+
Response response = uploadManager.put(localFilePath, key, upToken,params,null,false);
65+
//输出返回结果
66+
System.out.println(response.bodyString());
67+
}
68+
69+
}

0 commit comments

Comments
 (0)