多文件上传
下面多文件上传的方法存在缺陷,目前发现谷歌49.0.2623版本不支持(因为该版本不支持Jquery的clone方法但是上传插件里有用clone方法),但是高版本的谷歌可以,IE10上也测试通过
$.ajaxFileUploadfx({
url:"advertisementManager/insertOrUpdateAdInfo",
secureuri: false,
fileElementId:inputId,//这里被改造成了数组
dataType: 'text', //返回数据的类型
method: "post",
data: {
"submitType":submitType,
"updateId":updateId
},
success: function(data, status) {
},
error: function(data, status, e) {
}
});
附上ajaxfileupload.js的fileElementId被改成数组的代码
后端通过MultipartHttpServletRequest类去接收
@RequestMapping(value = "/insertOrUpdateAdInfo", method = RequestMethod.POST)
@ContentNegotiate(ParameterName = "contentType", mediaType = ContentNegotiate.TEXT_HTML)
public String insertOrUpdateAdInfo(MultipartHttpServletRequest request)
{
LocalContext localContext = new LocalContext();
if (!(request instanceof MultipartHttpServletRequest))
{
localContext.failed("请求类型不正确!");
}
Map<String, Object> param = new HashMap();
param.put("id", request.getParameter("updateId"));//获取属性
Map<String,MultipartFile> mulfile = request.getFileMap();
InputStream inputstream = null;
for(Entry<String, MultipartFile> multiFile: mulfile.entrySet())
{
inputstream = multiFile.getValue().getInputStream();//获取文件流
String uploadFileName = multiFile.getValue().getOriginalFilename();//获取文件名
}
}
补充通过form表单提交多文件的方法,该方法经测试支持高低版本的谷歌浏览器
需要插件jquery-form.js
HTML页面:(注意每个input须有name属性,form表单提交数据,后台是通过name获取数据的)
<form id="fileinput" enctype="multipart/form-data">
<input type="text" id="adName" name="adName" style="display:none">
<input type="text" id="adDesc" name="adDesc" style="display:none">
<input type="text" id="adType" name="adType" style="display:none">
<input type="text" id="adNumber" name="adNumber" style="display:none">
<input type="text" id="submitType" name="submitType" style="display:none">
<input type="text" id="updateId" name="updateId" style="display:none">
<input type="file" name="myFile0" id="myFile0" multiple="multiple"/>点击这里上传文件
</form>
js:
//给form里面的属性赋值,需要一同传到后台
$("#adName").val($("#adNameInModel").val()||"");
$("#adDesc").val($("#adDescInModel").val()||"");
$("#adType").val($("#adTypeInModel").val()||"");
$("#adNumber").val($("#adNumberInModel").val()||"");
$("#submitType").val(submitType||"");
$("#updateId").val(updateId||"");
$("#fileinput").ajaxSubmit({
url:ajax.addressIP.testAdress + "advertisementManager/insertOrUpdateAdInfo",
type: "post",
success: function(data, status) {
},
error: function(data, status, e) {
}
});