前台js使用ajaxFileUpload上传文件,回调方法只走error问题解决方案
$.ajaxFileUpload({
url:'<%=basePath%>/cash/addCfOrder.do',
secureuri: false,
fileElementId:'uploadFile',//要上传的input标签的id
data:data,
dataType:'json',
cache: false,
async:false,
method:"post",
success:function(json){alert(JSON.stringify(json))}
}
引用ajaxfileupload.js,需要对代码进行修改,否则上传文件成功后,返回的方法只会走error方法,因为返回的json参数被包装了一层<pre></pre>标签。
修改内容如下,加入以下代码,
data = r.responseText;
var
start = data.indexOf(
">"
);
if
(start != -1) {
var
end = data.indexOf(
"<"
, start + 1);
if
(end != -1) {
data = data.substring(start + 1, end);
}
}
修改后代码如下图:
后台代码如下:
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request;
Iterator iter = mr.getFileMap().values().iterator();
if (iter.hasNext()) {
MultipartFile file = (MultipartFile) iter.next();
// 上传的文件名称,展示用
uploadName = file.getOriginalFilename();
// 要保存的文件名称,保存服务器用
saveFile = new Date().getTime() + uploadName.substring(uploadName.indexOf("."), uploadName.length());
try {
FileUtils.copyInputStreamToFile(file.getInputStream(),
new File(Constants.getProperty("IMAGES_STORAGE_PATH"), saveFile));
} catch (IOException e) {
e.printStackTrace();
}
}