用ajax实现文件的异步上传功能是很常用的。
html定义文件上传标签
<input type="file" id="myfile" class="default" multiple="multiple"/> //multiple属性是声音这个文件上传标签可以一次性上传多个文件
js上传文件验证(这里我假设上传的是excel文件)
*注意只能通过js获取,$(“#myfile”).files[0]无效
function checkExcel(){
var file = document.getElementById(myfile).files[0];//由于可以同时上传 多个文件,这里我们取第一个
if(file==undefined){//判断是否选择了文件
//do something
return false
}
if(!/[^\.](\.xlsx)|(\.xls)$/i.test(file.name)){//判断是否是Excel类型
//do something
return false;
}
return true
}
ajax上传文件
如果上面的验证通过,就开始可以上传文件了
formData对象解释http://blog.csdn.net/csdnzhangtao5/article/details/53184858
var fileObj = document.getElementById(myfile).files[0];// 获取文件对像
var form = new FormData(); // FormData 对象 文件对象必须封装在FormData 里进行提交
form.append("file", fileObj); //把我们上传的文件对象加入到form 里
form.append("name", "张三"); //添加我们要上传的其他参数
$.ajax({
url : url,
type : 'POST',data : form,timeout : 1800000,processData : false,contentType : false,
success : function(data) {
//do something
},
error : function handleAjaxError(xhr, textStatus, error) {
//do something
}
后台接收
@RequestMapping(value="/importStoreCode",method=RequestMethod.POST)
public AjaxObj importStoreCode(Stringname,@RequestParam(value="file") CommonsMultipartFile file){
InputStream inputStream=file.getFileItem().getInputStream();//这个就是你的文件输入流,然后你可以进行相应处理了。
//CommonsMultipartFile是spring web的多文件处理类
}