发表于: 2018-03-29 22:50:48

1 533


今天完成的事情:
1.完成了使用策略模式,来完成转换图片迁移方向的功能。

2.使用策略模式,完成更改配置文件即可转换上传到的服务商。

逻辑大体是,两个策略类里的方法名都是一致的,但是分别调用不同的工具类。

这样,只需要在xml配置中更换注入的类名,就可以完成工具类的替换。

策略控制类:

public migrationContext(Strategy strategy) {
this.strategy = strategy;
}

public String migrationUp() throws IOException {
return strategy.migration();
}

public String fileUpload(String filename, InputStream inputStream) throws IOException {
return strategy.fileUpload(filename, inputStream);
}

阿里云策略列:

@Override
public String migration() throws IOException {
ObjectListing listing = OSSUtil.getall();
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
String key = objectSummary.getKey();
InputStream in = OSSUtil.down(key);
QiNiuUtil.up(in, key);
}
// 关闭client
   OSSUtil.shutdownClient();
String name = "阿里云迁移到七牛云完成!";
return name;
}

@Override
public String fileUpload(String filename, InputStream inputStream) throws IOException {
OSSUtil.putFiles(filename, inputStream);
return "上传到阿里云成功!";
}

七牛云策略列:

@Override
public String migration() throws IOException {
FileInfo[] info = QiNiuUtil.Qniuall();
//遍历文件列表,得到各个文件的文件名
   for (FileInfo fileInfo : info) {
//通过文件名去获取到七牛云的下载链接
       String url = QiNiuUtil.down(fileInfo.key);
//将链接转化成输入流
       InputStream in = urlsa.urldown(url);
//将流传递给阿里云上传方法,实现文件的上传。
       OSSUtil.putFiles(fileInfo.key, in);
in.close();
}
//关闭客户端
   OSSUtil.shutdownClient();
String name = "七牛云迁移到阿里云完成!";
return name;
}

@Override
public String fileUpload(String filename, InputStream inputStream) throws IOException {
QiNiuUtil.up(inputStream, filename);
return "上传到七牛云成功";
}


明天计划的事情:完成任务七项目的搭建。
遇到的问题:
1.从阿里云转换到七牛云,从七牛云转换到阿里云都只能做一次,第二次就会报错。
异常:com.aliyun.oss.ClientException: Unknown
错误原因:在图片迁移完成之后,我就关闭了阿里云的客户端,导致第二次使用客户端的时候,得到的是一个空对象,导致程序异常。
研究了一下代码,首先是将OSSClient客户端作为静态属性,然后在程序中创建get方法去验证客户端是否为空之后,进行return,不奏效。
然后就将OSSClient作为方法变量,首先赋空,然后再创建对象。Bug解除。
2.吃完饭回来,修复好上面的BUG,启动程序,程序报了另一个异常。
复制网址到网页,得到的Json数据如下:
根据官方文档,错误应该为错误的凭证,也应该是凭证过期了。
一开始想了想,程序建立开始就创建好了bean,也就是创建好了凭证。
也就是说,这样子程序只支持程序启动初期的一段时间内进行图片迁移。
在web程序运行一段时间后,图片迁移功能就会报错。
收获:
进度:
任务开始时间:2018年03月18日
预计demo时间:2018年03月30日
禅道地址:http://task.ptteng.com/zentao/project-task-490.html



返回列表 返回列表
评论

    分享到