发表于: 2018-03-24 23:39:25

1 619


今天完成的事情:
今天主要学习了一下编写关于工具类,但是感觉很粗糙,因为涉及到网页上传图片的的原因,还是只能用tomcat来跑。
//简单上传的凭证
public String simplyUpToken() {
String upToken = auth.uploadToken(bucket);
logger.info("简单上传的凭证" + upToken);
return upToken;
}
//覆盖上传的凭证
public String coverUpToken(String keySuffix) {
String key = keyName + keySuffix;
String upToken = auth.uploadToken(bucket, key);
logger.info("覆盖上传的凭证" + upToken);
return upToken;
}
//自定义上传回复的凭证
public String customUpToken(String keySuffix) {
StringMap putPolicy = new StringMap();
String key = keyName + keySuffix;
putPolicy.put("returnBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize)}");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, key, expireSeconds, putPolicy);
logger.info("自定义上传回复的凭证" + upToken);
return upToken;
}
//带回调业务服务器的凭证
public String callBackUpToken() {
StringMap putPolicy = new StringMap();
putPolicy.put("callbackUrl", "http://api.example.com/qiniu/upload/callback");
putPolicy.put("callbackBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize)}");
putPolicy.put("callbackBodyType", "application/json");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);
logger.info("带回调业务服务器的凭证" + upToken);
return upToken;
}
//带数据处理的凭证
public String treatedUpToken() {
StringMap putPolicy = new StringMap();
//数据处理指令,支持多个指令
String saveMp4Entry = String.format("%s:avthumb_test_target.mp4", bucket);
String saveJpgEntry = String.format("%s:vframe_test_target.jpg", bucket);
String avthumbMp4Fop = String.format("avthumb/mp4|saveas/%s", UrlSafeBase64.encodeToString(saveMp4Entry));
String vframeJpgFop = String.format("vframe/jpg/offset/1|saveas/%s", UrlSafeBase64.encodeToString(saveJpgEntry));
//将多个数据处理指令拼接起来
String persistentOpfs = StringUtils.join(new String[]{avthumbMp4Fop, vframeJpgFop}, ";");
putPolicy.put("persistentOps", persistentOpfs);
//数据处理队列名称,必填
putPolicy.put("persistentPipeline", "mps-pipe1");
//数据处理完成结果通知地址
putPolicy.put("persistentNotifyUrl", "http://api.example.com/qiniu/pfop/notify");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);
logger.info("带数据处理的凭证" + upToken);
return upToken;
}
//最简单的就是上传本地文件,直接指定文件的完整路径即可上传。
public void LocalPath(String localFilePath, String key) {
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
logger.info("最简单的就是上传本地文件,直接指定文件的完整路径即可上传。" + putRet.key + putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
}
//字节数组上传,可以支持将内存中的字节数组上传到空间中。
public void ByteUpload(byte[] uploadBytes) {
logger.info("字节数组上传,可以支持将内存中的字节数组上传到空间中。");
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
//默认不指定key的情况下,以文件内容的hash值作为文件名
try {
uploadBytes = "hello qiniu cloud".getBytes("utf-8");
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
String keys = keyName + ".txt";
try {
Response response = uploadManager.put(uploadBytes, keys, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
logger.info("字节数组上传。" + putRet.key + "---" + putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (UnsupportedEncodingException ex) {
//ignore
}
}
//数据流上传,这里演示的是InputStream对象的上传,适用于所有的InputStream子类。这里的ByteInputStream只用于演示目的,实际用法根据情况而定。
public void DataStreamUpload(byte[] uploadBytes) {
logger.info("数据流上传,这里演示的是InputStream对象的上传,适用于所有的InputStream子类。这里的ByteInputStream只用于演示目的,实际用法根据情况而定。");
UploadManager uploadManager = new UploadManager(cfg);
try {
uploadBytes = "hello qiniu cloud".getBytes("utf-8");
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(uploadBytes);
try {
Response response = uploadManager.put(byteInputStream, keyName, simplyUpToken(), null, null);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
logger.info("数据流上传。" + putRet.key + "---" + putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (UnsupportedEncodingException ex) {
//ignore
}
}
//下载文件 公
public String outerPlate(String fileName) throws IOException {
logger.info("下载文件 公");
String encodedFileName = URLEncoder.encode(fileName, "utf-8");
String finalUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
logger.info("下载文件 公" + finalUrl);
return finalUrl;
}
//下载文件 私有空间
//对于私有空间,首先需要按照公开空间的文件访问方式构建对应的公开空间访问链接,然后再对这个链接进行私有授权签名。
public String secretPlate(String fileName) throws IOException {
String encodedFileName = URLEncoder.encode(fileName, "utf-8");
String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
Auth auth = Auth.create(accessKey, secretKey);
long expireInSeconds = 3600;//1小时,可以自定义链接过期时间
String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
logger.info("私有空间。" + finalUrl);
return finalUrl;
}
//获取文件列表
//调用listFiles方法列举指定空间的指定文件
//参数一:bucket 空间名
//参数二:prefix 文件名前缀
//参数三:marker 上一次获取文件列表时返回的 marker
//参数四:limit 每次迭代的长度限制,最大1000,推荐值 100
//参数五:delimiter 指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
public void getAllFileName() {
logger.info("获取文件列表");
//实例化一个BucketManager对象
BucketManager bucketManager = new BucketManager(auth, cfg);
//要列举文件的空间名
try {
FileListing fileListing = bucketManager.listFiles(bucket, null, null, 1000, null);
FileInfo[] items = fileListing.items;
for (FileInfo fileInfo : items) {
System.out.println(fileInfo.key);
}
} catch (QiniuException e) {
//捕获异常信息
Response r = e.response;
System.out.println(r.toString());
}
}
public void getAFileName(File file, String key) {
UploadManager uploadManager = new UploadManager(cfg);
//String key = null;
try {
//byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(file, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
//System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
但是因为网页上传图片无法成功,还得继续研究七牛云的API和如何接收用户上传的图片并将其上传到七牛云。
明天计划的事情:继续编写上传七牛云的功能。
遇到的问题:

1.如何将网页上传的图片上传到七牛云。

在测试的demo中是可以完成的,但是在进行网络上传到时候,就总是失败。

工具类编写似乎没有写好。制作自己的工具类,似乎比想象中的要艰难。

收获:
1.如何才算是吃透了一个知识点?
进度:
任务开始时间:2018年03月18日
预计demo时间:2018年03月30日



返回列表 返回列表
评论

    分享到