xhr上传文件

document.getElementById('imgFile').addEventListener('change', readFile, false);
//上传图片
function readFile() {
    var file = this.files[0];
    /* var rFilter = /^(image\/jpeg|image\/png|image\/jpg)$/i;
        if (!rFilter.test(file.type)) {
            alert('请选择图片文件');
            return;
        } */
    
function xhrSubmit(file,value) {
		var me = this;
        var type,
            resUrl,
            fd,   /*FormData*/
            xhr;

        if(value){
	        xhr = false;
	        try {
	            xhr = new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
	        } catch (e) {
	            xhr = ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。
	        }
	        var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"正在上传文件..."});
			    myMask.show();
			    me.down('#importBtn').setDisabled(true);
			    
	        if (xhr.upload) {
	            // 文件上传成功或是失败
	            xhr.onreadystatechange = function (e) {
	                if (xhr.readyState == 4) {
	                    if (xhr.status == 200) {
	                    	var data = JSON.parse(xhr.responseText);
	                    	if(data.success){
	                    		myMask.hide();
	                    		me.down('#realUploadPath').setValue(data.data);
	                    		me.down('#importBtn').setDisabled(false);
	                    	}
	                    } else {
	                        alert('服务器出错');
	                    }
	                }
	            };
	            xhr.open("POST", "customer/uploadFile.do", true);
	            xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

	            var fd = new FormData();
	            fd.append("file", file);
	            xhr.send(fd);
	        }
        }
    },
}


#java端
/**
	 * 
	 * @Title: uploadFile
	 * @Description: TODO(上传文件)
	 * @param @param positionId
	 * @param @return
	 * @return Map<String,Object> 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/uploadFile")
	@ResponseBody
	public Map<String, Object> uploadFile(@RequestParam MultipartFile file,HttpServletRequest request) {


		Map<String, Object> map = new HashMap<String, Object>();
		
	      MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
	        //这里要进行判断,即使是空值,没有上传内容,file都是有值(空值)的,而文件流大小要大于0才是有上传的东西
	        if (file.getSize() > 0){
	          //获得上传文件原始名
	          String imagename = file.getOriginalFilename();
	          //算出后缀名
	          String ext = imagename.substring(imagename.lastIndexOf(".")) ;
	          //对文件类型进行判断,这个操作也可以在前台进行处理,在前台进行处理比较好,前后台都进行处理最稳妥
	          List<String> fileTypes = new ArrayList<String>();
	          fileTypes.add(".xls");
	          fileTypes.add(".xlsx");
	          fileTypes.add(".xlk");
	          //是再进行处理
	          if (fileTypes.contains(ext.toLowerCase())){
	            //文件名为:唯一的工号 + avatar + 系统时间 + 后缀
	            String fileName = System.currentTimeMillis() + ext ;
	            //文件夹;String imagepath = request.getRealPath("/upload");过时的方法,用request.getSession().getServletContext()代替
	            String avatarFolder = request.getSession().getServletContext().getRealPath("/uploadFile");
	            File localFile = new File(avatarFolder,fileName);
	            try {
	              file.transferTo(localFile);
	              map.put(ConstDefine.CONST_SUCCESS_KEY,true);
	              map.put(ConstDefine.CONST_DATA_KEY,request.getSession().getServletContext().getRealPath("/uploadFile")+"//"+fileName);
	            } catch (IOException e) {
            	  logger.error(e.getMessage());// 打印异常日志信息
    			  map.put(ConstDefine.CONST_SUCCESS_KEY, false);
    			  map.put(ConstDefine.CONST_MESSAGE_KEY, e.getMessage());
	            }
	          } else {
	        	  map.put(ConstDefine.CONST_SUCCESS_KEY,false);
	        	  map.put(ConstDefine.CONST_MESSAGE_KEY,"文件格式出错!");
	          }
	        }
		return map;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值