xhr上传文件

来源:互联网 发布:网页中js文件怎么打开 编辑:程序博客网 时间:2024/06/16 18:59
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")@ResponseBodypublic 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;}