用agular2做文件上传功能杂记-遁地龙卷风

(-1)功能描述

   写一个功能,前台发起执行请求,后台执行任务,前台可以获取执行的进度,并取得最后的执行状态。

(0)angular2 $http文件上传

  这里之所以不用angular-file-upload是为了共用代码。

 

 

var time = new Date().getTime();
var obj = {
	method:"POST",
	url:"csvFile",
	headers : { 'Content-Type':undefined},
	transformRequest: function() {
	  var formData = new FormData();
	  formData.append('file', $('#uploadBtn')[0].files[0]);
	  formData.append('time',time);
	  return formData;
	  }
	}

 

  

  'Content-Type':undefined 

  transformRequest

  关于这两个部分网上有一些说法,本人能力有限,只知道这么做能出效果,不知道他们说的对不对,还望高人指点

 

(1)如何处理多线程

  因为要提供返回进度和最后状态的接口,所以后台用HashMap来存储信息,已前台传入的毫秒数做标记

  取消了很多成员变量的使用,改为传参。

  还用一点需要注意,因为前台发出执行请求,随后就会发出得到执行进度请求,而在返回进度方法中我写成了下面这个样子

这样写埋下了祸根,好心办了坏事,气人的是这种错误不会直观的显示出来。排查也费了好大劲。

 

Integer rate = rateMap.get(time) ;
		if(rate !=null)
		{
			if(rate == 100)
			{
				rateMap.remove(time);
				return 100;
			}
			else
			{
				return rate;
			}
			
		}
		else
		{
			return 100;
		}

 

  最后改成当为null时返回0

 

(2)如何导出maven项目群、多模块项目、多个maven项目

    其实只要按正常操作导出主项目(单个项目)就可以了。我百度....

(3)插入数据

  这里又犯了一个错误,因为会有许多为null的数据,之前的写法是当某一个字段为null,就不会执行dao层代码

  其实这里只要id不为null就好,于是更改了代码,非主要数据为null程序仍可以执行dao层代码

 

posted @ 2017-02-13 20:19  遁地龙卷风  阅读(415)  评论(0编辑  收藏  举报