前台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);

    }

}

修改后代码如下图:

前台js使用ajaxFileUpload上传文件,回调方法只走error问题解决方案

 

后台代码如下:

 

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();
        }
}