发表于: 2017-11-19 23:17:49

1 665


今天完成的事情:

完成腾讯图片上传,将师兄工具类改为我自己用的,包含内容比以往接口都多,,,使用的是数据流的传输方法上传.将前端接收到的文件转换为数据流的形式,同时这种形式可以保存在缓存当中,下次可以直接从缓存中取出该数据流...

  @RequestMapping(value = "/a/u/tengXunimage" , method = RequestMethod.POST)
public void uploadFiles(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)throws ServletException,IOException {

httpServletResponse.setCharacterEncoding("UTF-8");
       httpServletResponse.setContentType("text/html;charset=utf-8");

       loggerStudentController.info("开始上传");
       OutputStream out = httpServletResponse.getOutputStream();
       loggerStudentController.info(out);
       String message = fileUtile.readPicture(httpServletRequest);
       loggerStudentController.info("message: " + message);
       //查看在message里的第几个字符起为"u_" ,下标从0开始,如果没有就返回-1
       int sign = message.indexOf("u_");
       loggerStudentController.info("sign: " + sign);
       if (sign != -1) {
String token = CookieUtile.getCookieValue(httpServletRequest, "token");
           String s1 = null;
           String s2 = null;
//                 if (token != null) {
           String mes = null;
           try {
mes = desUtil.decrypt(token);
           } catch (Exception e) {
e.printStackTrace();
           }
String[] array = mes.split(":");
//                     s1 = array[0];
           s2 = array[1];
           loggerStudentController.info("账户" + s2);
           //默认不指定key的情况下,以文件内容的hash值作为文件名
           String key = s2;
           if (message != null) {
Student student = new Student();
               student.setUserName(s2);
               String urlImage = "agan1-1253523354.cos.ap-chengdu.myqcloud.com/image" + s2;
               student.setImage(urlImage);
               boolean i = studentService.updateStudentImage(student);
               loggerStudentController.info("更改数据库图片" + i);
               loggerStudentController.info("更改的数据量 : " + i);
               out.write(("<script charset=\"utf-8\" language='javaScript'> alert('文件上传成功');</script>").getBytes());
               httpServletResponse.setHeader("refresh", "0;url=/a/home");
           } else {
out.write(("<script charset=\"utf-8\" language='javaScript'> alert('" + message + "');</script>").getBytes());
           }
}
}


奇怪的是这次试用之前的jsp页面上传是可以获取从前端传送过来的值.还是不确定是哪里的问题.

七牛云的批量获取存储空间文件,更改工具类.

    Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释

   String accessKey = "FR45o3bvuh_sZLqRe0mkqYyIixtkzaFGaqif20-e";
   String secretKey = "MW1nM3YrmgXhKO2IoQv0fIdM4_FdKcJerx6V3Zpu";

   String bucket = "packagedemo";

   Auth auth = Auth.create(accessKey, secretKey);

   BucketManager bucketManager = new BucketManager(auth, cfg);
       //文件名前缀
       String prefix = "";
       //每次迭代的长度限制,最大1000,推荐值 1000
       int limit = 1000;
       //指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
       String delimiter = "";
       //列举空间文件列表
   BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
   FileInfo[] items = fileListIterator.next();
       while (fileListIterator.hasNext()) {
//处理获取的file list结果
           for (FileInfo item : items) {
loggerGetQiNiuImage.info("文件名:   " + item.key);
               loggerGetQiNiuImage.info("文件hash:  " + item.hash);
               loggerGetQiNiuImage.info(item.fsize);
               loggerGetQiNiuImage.info("文件类型:   " + item.mimeType);
               loggerGetQiNiuImage.info("放入时间:  " + item.putTime);
               loggerGetQiNiuImage.info(item.endUser);
//           拼接连接
               String qiNiImageUrl = "http://ozi46fb63.bkt.clouddn.com/" + item.key;


明天的计划:

将图片迁移完成,结束任务7

准备小课堂.


遇到的困难:

【问题】:前端往后端传输数据的数据流为空值.
【日期】:2017.11.19
【原因】: 在controller里面声明工具类时没有加注解@autowired,,加上注解之后需要在此工具类里面
加注解@component 生命为Bean
【怎么发现的】: 单步调试.报错方法为空值.(注意这里要区分是方法为空值还是参数为空值)
【修复】:  声明工具类加上注解@autowired,并在类加上@component
【在哪些文件修改了】:  controller ,,  工具类
【我导致的】:  Y
【解决bug的时间】:3小时
【教训】仔细看报错. ,单步调试好好利用


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity
原因:缺少commons-httpclient-3.0.jar


最后一个还是jsp页面的传值问题,


收获.  

补的小知识点比较多.

Java中字符串中子串的查找共有四种方法,如下:
1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 
2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 
3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 
4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。


任务进度:任务7步骤2

任务开始时间:2017-11-13

预计demo时间:2017-11-21

是否有延期风险:暂无

禅道:http://task.ptteng.com/zentao/task-view-13480.html




返回列表 返回列表
评论

    分享到