最近一个项目,要用到文件上传,之前用Formdata实现的,可以在IE10以上,firefox、chrome等浏览器上正常运行,但是在IE8和IE9下没办法正常运行。
在网上找了很多办法,都没办法解决,老是报
org.springframework.web.multipart.MultipartException: The current request is not a multipart request
用了jquery.form.js的ajaxSubmit还是不起作用。
怀疑可能是拦截器的问题导致了。
后来终于找到一个jquery上传插件解决了这个问题。jquery.upload2
使用方法如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script src="upload02.js"></script>
<script type="text/javascript">
function look() {
//alert($("form input[type=file]").val())
alert($("input[name=test]").upload("getFileVal"))
}
function clean() {
$("input[name=test]").upload("clean")
}
function ajaxSubmit() {
$("input[name=test]").upload({
url: 'index.aspx',
// 其他表单数据
params: { name: 'pxblog' },
// 上传完成后, 返回json, text
dataType: 'json',
onSend: function (obj, str) { return true; },
// 上传之后回调
onComplate: function (data) {
alert(data.file);
}
});
$("input[name=test]").upload("ajaxSubmit")
}
</script>
</head>
<body>
<p>
<input type="button" value="look" οnclick="look()" />
<input type="button" value="clean" οnclick="clean()" />
<input type="button" value="tijiao" οnclick="ajaxSubmit()" />
<input type="file" name="test" />
</p>
</body>
</html>
这个插件源码地址:
http://code.taobao.org/p/upload2/src/
由于我controller返回的不是字符串数据,这个js插件的处理有点儿问题,就自己改了一下。
就是把里面的window.eval('(' + data + ')');代码给注释掉了。