springmvc结合jquery.form.js异步提交表单上传文件
<script type="text/javascript" src="/libs/js/form/jquery.form.js"></script>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="uploadTempDir" value="/uploads/tmp" />
<property name="maxUploadSize" value="-1"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="false"/>
</bean>
<html>
<head>
<title>导入文件</title>
<script type="text/javascript" src="/libs/js/form/jquery.form.js"></script>
<script type="text/javascript">
function upload() {
var options = {
url: "/files/upload.do",
type: "post",
dataType: "json",
success: function (status) {
if (status == "success") {
alert("上传成功!");
} else {
alert("上传失败!");
}
}
};
$("#uploadForm").ajaxSubmit(options);
}
</script>
</head>
<body id="body">
<form id="uploadForm" action="" enctype="multipart/form-data" method="post">
<input type="file" name="file" id="file"/>
<button onclick="upload()">上传</button>
</form>
</body>
</html>
@Resource(name = "multipartResolver")
private CommonsMultipartResolver multipartResolver;
@RequestMapping("/upload")
@ResponseBody
private String upload(HttpServletRequest request) {
String path = null;
multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile file = multiRequest.getFile(iter.next());
if (file != null) {
try {
String fakeName = (int) (Math.random() * 10000);
String ext = "";
int index = file.getOriginalFilename().lastIndexOf(".");
if (index > -1) {
ext = file.getOriginalFilename().substring(index + 1);
path = "D:/temp/" + fakeName + "." + ext;
} else {
path = "D:/temp/" + fakeName;
}
file.transferTo(new File(path));
} catch (IOException e) {
e.printStackTrace();
return "failure";
}
}
}
}
return "success";
}