发表于: 2018-03-23 22:56:10

1 627


今天完成的事情:
今天一直在学习关于七牛云的图片上传,不得不说,阿里云的那个官方文档,相比七牛云的简直不要贴心的太多。
但是相对而言的话,从七牛云的官方文档去提取工具类,就方便了很多,前提是你能够看懂七牛的文档。
一开始看的很懵,但是后来大概搜了一下别人的demo,看到一半我就明白了,七牛的API讲了太多关于json的东西,而只在代码简单的提供了一下怎么用。
阿里云是在开始就建立好一个完整的demo,直接展示给对方。相比之下的话,阿里的一目了然,但是用起来比较繁琐,七牛的看懂有点麻烦。
相比之下的话,阿里云的更贴近新手,七牛的更适合那些有一定开发经验的人。
吐槽完毕,开始学习。
首先是引入jar包。
  1. <dependency>
  2. <groupId>com.qiniu</groupId>
  3. <artifactId>qiniu-java-sdk</artifactId>
  4. <version>7.2.6</version>
  5. <scope>compile</scope>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.squareup.okhttp3</groupId>
  9. <artifactId>okhttp</artifactId>
  10. <version>3.3.1</version>
  11. <scope>compile</scope>
  12. </dependency>
  13. <dependency>
  14. <groupId>com.google.code.gson</groupId>
  15. <artifactId>gson</artifactId>
  16. <version>2.6.2</version>
  17. <scope>compile</scope>
  18. </dependency>
  19. <dependency>
  20. <groupId>com.qiniu</groupId>
  21. <artifactId>happy-dns-java</artifactId>
  22. <version>0.1.4</version>
  23. <scope>compile</scope>
  24. </dependency>
上面的就试七牛云推荐的jar包,比阿里云的好,maven可以直接下载。
建好jar包,就开始编写java的代码,先建一个工具类:
//通过文件路径上传文件 文件后缀名 文件扩展名
public ExecuteResult<String> uploadFile(String localFile) throws AuthException, JSONException {
File file = new File(localFile);
String filenameExtension = localFile.substring(localFile.lastIndexOf("."), localFile.length());
return uploadFile(file, filenameExtension);
}

//通过File上传
public ExecuteResult<String> uploadFile(File file, String filenameExtension) throws AuthException, JSONException {
ExecuteResult<String> executeResult = new ExecuteResult<String>();
String uptoken = getUpToken();
PutExtra extra = new PutExtra();// 可选的上传选项,具体说明请参见使用手册。
   SimpleDateFormat time = new SimpleDateFormat("yyyy/MM/dd");
// 上传文件
   PutRet ret = IoApi.putFile(uptoken, time.format(new Date()) + "/" + UUID.randomUUID() + filenameExtension, file.getAbsolutePath(), extra);
if (ret.ok()) {
executeResult.setSuccessMessage("上传成功!");
executeResult.setResult(domain + ret.getKey());
} else {
executeResult.addErrorMessage("上传失败");
}
return executeResult;
}

//从 inputstream 中写入七牛
public boolean uploadFile(String key, String content) throws AuthException, JSONException {
// 读取的时候按的二进制,所以这里要同一
   ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes());
String uptoken = getUpToken();
// 可选的上传选项,具体说明请参见使用手册。
   PutExtra extra = new PutExtra();
// 上传文件
   PutRet ret = IoApi.Put(uptoken, key, inputStream, extra);
if (ret.ok()) {
return true;
} else {
return false;
}
}

//获得下载地址
public String getDownloadFileUrl(String filename) throws Exception {
Mac mac = getMac();
String baseUrl = URLUtils.makeBaseUrl(domain, filename);
GetPolicy getPolicy = new GetPolicy();
String downloadUrl = getPolicy.makeRequest(baseUrl, mac);
return downloadUrl;
}

//删除文件
public void deleteFile(String filename) {
Mac mac = getMac();
RSClient client = new RSClient(mac);
client.delete(domain, filename);
}

//获取凭证
private String getUpToken() throws AuthException, JSONException {
Mac mac = getMac();
PutPolicy putPolicy = new PutPolicy(bucketName);
String uptoken = putPolicy.token(mac);
return uptoken;
}

private Mac getMac() {
Mac mac = new Mac(ACCESS_KEY, SECRET_KEY);
return mac;
}

明天计划的事情:尝试图片迁移,认真学习一下关于API的东西。

遇到的问题:暂无
收获:
1.当理解不了一个东西的时候,直接百度。
2.产品的每一个环节,都可以看成是一个设计,如何从源头解决问题,从而让工具最快的发挥效用。
3.
进度:
任务开始时间:2018年03月18日
预计demo时间:2018年03月30日



返回列表 返回列表
评论

    分享到