升级版地址:https://blog.csdn.net/u012547633/article/details/80198561
------------------------------jsp页面--------------------------------
-----------------------------js文件--------------------------------------------------
/**
* 验证上传文件框里是否为null
*/
$(function () {
$("#upload").click(function () {
if ($("#uploadFileId2").val().length > 0) {
ajaxFileUpload();
}
else {
$.messager.alert("请选择文件!");
}
});
});
/**
* ajax异步提交文件
* 将保存的文件信息Id返回
* @returns {Boolean}
*/
function ajaxFileUpload() {
$.ajaxFileUpload({
url: uploadUrl, //用于文件上传的服务器端请求地址
secureuri: false, //一般设置为false
fileElementId: 'uploadFileId2', //文件上传空间的id属性
dataType: 'json', //返回值类型 一般设置为json
type:"post",
success: function (data,status){
$('#uploadId').form('load',{
resultValue:data.result.id,
});
},
});
return false;
}
---------------------------------------------------------------@Controller--------------------------------------------------------
@RequestMapping("portal/attachment/uploadFile")
@ResponseBody //ajax请求必填
@MenuO(name="上传文件",code="attachment-uploadFile",parent="attachment-manager",type = Constant.AFFILIATED)
public Map uploadFile(HttpServletRequest request,HttpServletResponse response) throws Exception {
Map map = new HashMap();
AttachmentVo vo = new AttachmentVo();
//取得上传的文件
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("uploadFileName");
// response.setContentType("text/html");
// response.setCharacterEncoding("UTF-8");
//得到文件名称
String realFileName = file.getOriginalFilename();
String suffix = realFileName.substring(realFileName.indexOf("."), realFileName.length());
//判断文件类型是否可用和文件类型
Map attMap = StringTool.attachmentType(suffix);
if(!(Boolean) attMap.get("flag")) {
map.put("result", "{file.type.error}");
Fail(map);
return map;
}
String fileRealPath = request.getSession().getServletContext().getRealPath("/")+"WEB-INF\\upload\\";
String webPath = "WEB-INF/upload/";
String randomName = FileHelper.getRandomFileName(suffix);
//判断文件夹是否存在
File targerFile = new File(fileRealPath);
//判断是否存在目录
if(!targerFile.exists()) {
targerFile.mkdirs();
}
//保存文件
File uploadFile = new File(fileRealPath+randomName);
FileCopyUtils.copy(file.getBytes(), uploadFile);
//配置文件实体信息
vo.setaTypeId(Long.valueOf(attMap.get("type").toString()));//文件类型
vo.setaPath(webPath+randomName);//路径
vo.setaName(randomName);//文件名
Login login = (Login)request.getSession().getAttribute(Constant.LOGIN_SESSION);
vo.setUploadUser(login.getId());
Attachment result = attachmentService.addOrUpdate(vo);
//返回上传信息
map.put("result", new AttachmentVo(result));
Success(map);
return map;
}
}
注意:
ajaxfileupload.js 这个js比较重要,一定要
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
s.error.call( s.context || s, xhr, status, e );
}
// Fire the global callback
if ( s.global ) {
(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
}
},
这个是在ajaxfileupload.js 爆出jQuery.handleError(s, xml, status, e);为未定义方法时
需要把这个方法加载到ajaxfileupload.js中;
======================================2014-09-25记录,望大家指正和咨询