没事 来研究研究 ajaxFileUpload 这个东西
首先说明一下 ajaxFileUpload 这个是个什么东西呢
它是一个能上传文件的ajax
网上一堆说ajaxFileUpload的 不过大部分都是嵌套strus2的 我来一个Spring MVC版本的
从头说起 这个首先要加载的除了jquery-1.7.2.min.js 还有一个ajaxfileupload.js
<script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../js/ajaxfileupload.js"></script>
然后js文件 调用的部分
$.ajaxFileUpload({
url:"DemoController.do?upfile",
type:'POST',
secureuri : false,
fileElementId : 'imageInfo',
ansyn: false,
data:{
txt:111
},
dataType:'json',
success:function(data,Status){
alert(上传成功)
}
});
当然了 这些在网上一搜一大堆 这里重点说明一下“ fileElementId : 'imageInfo',”
前面 fileElementId 这个是固定写法
后面imageInfo 是标签的ID
我这里jsp的完整上传标签是这样的
<input type="file" id="imageInfo" name="imageInfo"/>
下面开始捞干的
java后台接受文件是以流的方式处理的
我亲测了好多次 公司里的例子的接受方法是
@RequestMapping(params = "upfile")
@ResponseBody
public Json upfile(String txt,@RequestParam(required = false)MultipartFile imageInfo){
..........
}
但是断点走过来之后 发现 不但imageInfo没有值 就连txt也没有值
所以去查原因 结果发现 原来是配置文件的问题
需要加下面这样一个bean
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" /> <!-- 编码 -->
<property name="maxInMemorySize" value="10240" /> <!-- 上传时占用最大内存大小 (10240) -->
<property name="maxUploadSize" value="-1" /> <!-- 最大文件大小,-1为无限止(-1) -->
</bean>
好了 继续往下走
这时重启tomcat就开始报错
缺少这个类org.apache.commons.fileupload.FileItemFactory
查了好久 原来少了一个jar包真的查了好久 不过后来百度了一下 fileItemFactory属于哪个jar包 结果一查一大堆 汗!~~
发现少了commons-fileupload 这个包(我找了一个1.2.2版本的)
再一开tomcat 果然不报错了
但是执行上传的方法就报错了 (不知道是不是只有这个方法报错)
说是缺少DeferredFileOutputStream这个类
这回我学乖了 直接百度 (你懂得)
发现少了commons-io这个包(我找了一个2.0.1版本的)
接下来 亲测可用 txt字符串 与文件流都能接收