发表于: 2017-11-22 15:15:28
1 683
今天完成的事情
完成数据迁移
先尝试从七牛云迁移到阿里云
可以参考: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";
}
可以将返回的数据存入数据库或是输出到文件,便于统计以及分析
提交任务七
明天的计划
开始任务八
遇到的问题
无
收获
数据迁移,错误处理
评论