我用的是这个:https://github.com/carlcarl/AjaxFileUpload
下载地址在这里:http://files.cnblogs.com/files/kissdodog/ajaxfileupload_JS_File.rar
AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值。
当初做了个异步上传的功能,选择它因为它的配置方式比较像jQuery的AJAX,我很喜欢。
ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options])
options参数说明:
1、url 上传处理程序地址。 2,fileElementId 需要上传的文件域的ID,即“<input type="file">”的ID。 3,secureuri 是否启用安全提交,默认为false。 4,dataType 服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。 5,success 提交成功后自动执行的处理函数,参数data就是服务器返回的数据。 6,error 提交失败自动执行的处理函数。 7,data 自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。 8, type 当要提交自定义参数时,这个参数要设置成post
使用方法: 1.引入ajaxfileupload.js 2.在HTML中写出
<input id="fileInput" type="file" name="file"/>
3.在js中使用$.ajaxFileUpload
// 上传
$.ajaxFileUpload({
url : ctx + 'calculate/upload',
secureuri : false,
fileElementId : 'fileInput',
dataType : 'json',
success : function(data, status) {
$("#progressbar").progressbar("value", 100);
$("#download_div").show();
},
error : function(data, status) {
$("#progressbar").hide();
alert("上传文件错误");
}
});
4.在controller中接收
public String upload(@RequestParam(value = "file", required = false) MultipartFile file,
HttpServletRequest request, ModelMap model)
这样接收的file就是上传的文件了