发表于: 2017-11-22 15:15:28

1 680


今天完成的事情

完成数据迁移

先尝试从七牛云迁移到阿里云

可以参考:https://help.aliyun.com/document_detail/57053.html?spm=5176.doc56990.6.1050.HTgTF9

下载ossimport-2.2.4.zip,解压,在配置文件local_job.cfg中,设置数据源和目的端,在文件中,相关的配置都有注释说明,按照说明填写即可,参考文档,直接选择单机部署,采用一键导入的方式即可

配置文件部分内容:

windows系统下,在cmd中进入软件所在目录,执行import.bat,程序开始执行,会打开一个新的cmd窗口,显示日志

执行完后,可以在阿里云的控制台中查看:

说明迁移成功


从阿里云迁移到七牛云比较繁琐,可以参考:

https://developer.qiniu.com/kodo/tools/1296/qfetch

https://developer.qiniu.com/kodo/kb/1347/how-to-ali-cloud-oss-files-on-migration-to-seven-niuyun-storage

首先使用qshell获取到所有的文件名,然后在每个文件名前添加外链的前缀

手动添加前缀

也可以直接在阿里云的控制台中复制外链,这样可以不用qshell,将外链粘贴到文本文件中,直接用qfetch来进行迁移

在cmd中启动qfethc的windows64位程序进行迁移,具体输入信息需要参考文档

迁移到七牛云的流程,由于需要手动添加前缀,比较繁琐


修改代码,增加图片的删除方法,在用户上传新的头像后,删除之前的头像

参照阿里云的api,写了删除方法,根据文件名进行删除

/**
* 根据文件名,删除图片
* @param fileName
*/
public void delete(String fileName){
// 创建OSSClient实例
   OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
   // 删除Object
   ossClient.deleteObject("task13", fileName);
   // 关闭client
   ossClient.shutdown();
}

在控制器中增加如下语句,上传图片成功后,先获取到数据库中头像的外链,通过字符串操作,出去外链前缀,获得文件名,将文件名传入删除方法,执行删除

//删除平台上的图片
String Hea = userService.getById(user_id).getUserHead();
String fN = Hea.substring(Hea.lastIndexOf("/")+1);
picture.delete(fN);


修改短信代码,经验证码的生成过程内置到发送短信的方法中,判断发送是否成功,成功的话就返回生成的验证码,失败的话就发挥字符“ -1”,通过第三方返回的结果判断发送是否成功

if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map
   HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
   Set<String> keySet = data.keySet();
   for(String key:keySet){
   Object object = data.get(key);
       System.out.println(key +" = "+object);
   }
   return num;
}else{
 //异常返回输出错误码和错误信息
   System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
   return -1+"";
}

同样存入数据库,便于之后统计发送失败的次数

//发送验证码到用户手机
String num = smsSend.sendSMS(userPhone);
//将数据保存到数据库
Phonecode phoneCode = new Phonecode(System.currentTimeMillis(), num, userPhone);
phoneCodeService.add(phoneCode);


添加try/catch语句,用于错误处理,参考官网的文档,以阿里云为例,在上传方法中修改如下:

 public String fidfk(byte[] content,String fileName){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
       String key = fileName;
       try {
         // 上传
          ossClient.putObject("task13", key, new ByteArrayInputStream(content));
       } catch (OSSException oe) {
             String Error = oe.getMessage();
             return Error;
       } catch (ClientException ce) {
             String Error = ce.getMessage();
       } finally {
            if (ossClient != null) {
              ossClient.shutdown();
           }
       }
        return "success";
   }

可以将返回的数据存入数据库或是输出到文件,便于统计以及分析



提交任务七


明天的计划

开始任务八


遇到的问题


收获

数据迁移,错误处理



返回列表 返回列表
评论

    分享到