发表于: 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



返回列表 返回列表
评论

    分享到