发表于: 2017-11-20 23:12:26
1 663
今天完成的事情:
继续图片迁移, 思路是这样,本身是要从七牛云获取所有图片Url,然后拼接URL 直接上传到腾讯上面.
工具类写好了发现腾讯没有根据URL上传图片..
下午反过来搞,,从腾讯获取Url 拼接后上传到七牛云.
获取所有图片url.
public List<String> getTengXunImage (){
// 1 初始化身份信息(appid, secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(appId,secretId,secretKet);
// 2 设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-chengdu"));
// 3 生成 cos 客户端
COSClient cosClient = new COSClient(cred, clientConfig);
// 设置 bucket 名
// 获取 bucket 下成员(设置 delimiter)
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName(bucketName);
// 设置 list 的 prefix, 表示 list 出来的文件 key 都是以这个 prefix 开始
listObjectsRequest.setPrefix("");
// 设置 delimiter 为/, 即获取的是直接成员,不包含目录下的递归子成员
listObjectsRequest.setDelimiter("/");
// 设置 marker, (marker 由上一次 list 获取到, 或者第一次 list marker 为空)
listObjectsRequest.setMarker("");
// 设置最多 list 100 个成员,(如果不设置, 默认为 1000 个,最大允许一次 list 1000 个 key)
listObjectsRequest.setMaxKeys(100);
List <String > list = new ArrayList();
try {
ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
// 获取下次 list 的 marker
String nextMarker = objectListing.getNextMarker();
// 判断是否已经 list 完, 如果 list 结束, 则 isTruncated 为 false, 否则为 true
boolean isTruncated = objectListing.isTruncated();
List<COSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
for (COSObjectSummary cosObjectSummary : objectSummaries) {
list.add(cosObjectSummary.getKey());
// 文件路径
String key = cosObjectSummary.getKey();
// 获取文件长度
long fileSize = cosObjectSummary.getSize();
// 获取文件ETag
String eTag = cosObjectSummary.getETag();
// 获取最后修改时间
Date lastModified = cosObjectSummary.getLastModified();
// 获取文件的存储类型
String StorageClassStr = cosObjectSummary.getStorageClass();
}
} catch (CosServiceException cl){
loggerTengXunImage.error("服务异常" + cl);
} catch (CosClientException cle) {
// 自定义异常处理比如打印异常等
loggerTengXunImage.error("del object failed.", cle);
// ...
}return list;
拼接URL,
public void addFileFromList(List<String> list){
for (String key : list){
String url = "http://ozi46fb63.bkt.clouddn.com/"+key;
loggerUpQiNiuImage.info("+++++++++原图链接+++++++:"+url);
uploadNetResource(url,key);
}
}
}
做测试.
@Test
public void addFileFromList() {
try {
List<String> list = tengXunImage.getTengXunImage();
loggerController.info("所有信息" + list);
qiNiuImage.addFileFromList(list);
for (String key : list) {
String url = "http://ozi46fb63.bkt.clouddn.com/" + key;
loggerController.info("+++++++++原图链接+++++++:" + url);
qiNiuImage.uploadNetResource(url, key);
}
} catch (Exception e) {
e.getMessage();
loggerController.error("失败", e);
}
}
}
明天计划完成的事情:
完成任务7
去大学给老大捧场
遇到的困难:
今天状态不好.. 想东西没有思路.. 代码问题特别多,
现在是空指针,,,
原因在于获取腾讯图片获取不到为空值, 还不知道问题
另一个解决的问题,,报错 bean 名称错误,, 取消Component 然后改为 声明此类就可以..
收获:
List <String > list = new ArrayList();
List是接口,
ArrayList是JDK里提供的一个实现类。
编译时类型是List,运行时类型是ArrayList,
而List接口的实现类不只有ArrayList一个,
用一个List类型的引用这是“面向接口编程”,
主要是尽量面向接口编程。
常会用到很多不是我们写的类,我们叫第三方类库,
在类库里面很可能会返回一个这样的列表,但是他未必会返给你一个ArrayList,
没准是人家自己写的一个实现类都说不准,那么我们面向接口编程,
不需要了解是什么实现类,我们都把它们当List接收过来就好了,
我们就当成List来用。提高程序的透明性,让底层的实现对上层使用者封装。
List <String > list = new ArrayList();
这是把ArrayList()向上转型为List,这时假的lst不能用ArrayList中新增的方法(即不是List接口的方法),如get()
ArrayList <String > list = new ArrayList();
如果我们在知道要创建一个ArrayList()的话,用这个方式创建就可以使用ArrayList里面的全部方法
任务进度:任务7步骤2
任务开始时间:2017-11-13
预计demo时间:2017-11-21
是否有延期风险:暂无
禅道:http://task.ptteng.com/zentao/task-view-13481.html
评论