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;
}