zoukankan      html  css  js  c++  java
  • spring mvc ajaxfileupload文件上传返回json下载问题

    问题:使用spring mvc ajaxfileupload 文件上传在ie8下会提示json下载问题

    解决方案如下:

    服务器代码:

        @RequestMapping(value = "/addAnalysis", method = RequestMethod.POST)
        public void addAnalysisUI(
                HttpServletResponse response,HttpServletRequest request,HttpSession session,
                @RequestParam(required = false, value = "file") MultipartFile file,
                @RequestParam(required = false, value = "analysisTitle") String analysisTitle,
                @RequestParam(required = true,  value = "selectWeekly") String selectWeekly,
                @RequestParam(required = false, value = "contents") String contents,
                @RequestParam(required = true,  value = "analysisSource") String analysisSource){
            
            response.setCharacterEncoding("UTF-8");  
            response.setContentType("text/html");
            PrintWriter out = null;  
            ResponseMessage message = new ResponseMessage();
            try {
                //校验信息
                if (StringUtils.isBlank(analysisTitle) && StringUtils.isBlank(selectWeekly) && StringUtils.isBlank(analysisSource) && file == null) {
                    message.setStatus(202);
                } else {
                    String savePath = request.getServletContext().getRealPath("/WEB-INF/upload");
                    ManagerAccount user = (ManagerAccount) session
                            .getAttribute(Constants.CURRENT_USER);
                    File fileTemp = filePersistence(savePath, file);
                    Analysis analysis = new Analysis(analysisTitle, selectWeekly,
                            user.getName(), analysisSource, fileTemp.getName(),
                            new Date(), contents);
                    analysisService.insertDataAnalysis(analysis);// 往数据库中插入一条记录
                    message.setStatus(200);
                }
                out = response.getWriter();  
                out.append(JacksonUtils.obj2json(message)); 
            } catch (Exception ex) {
                logger.error(ex.getMessage());
            } finally {  
                if (out != null) {  
                    out.close();  
                }  
            }  
        }

    在我的项目里面配置jackjson转换器,后台返回json就不能用@responseBody 配置的Jackson 适配转换器转化,只能自己手动构建json字符串,设置Content-Type为“text/html;chartset=UTF-8”,然后通过response输出,因为在ie不支持application/json格式,另外firefox, chrome浏览器iframe在接收application/json格式的时候会自动将其转化为html格式,自动在json数据前后加上<pre></pre>标签导致ajaxfileupload插件取json数据错误

    前端js代码如下:

    function submitForm() {
        var oEditor = CKEDITOR.instances.contents;
        $('#contents').val(oEditor.getData());
        $('#form1').ajaxSubmit({
            url : 'XX/XX',
            dataType : 'text',
            cache : false,// 是否缓存
            type : 'POST',// 提交方式 可以选择post/get 推荐post
            async : false,// 同步异步 false是同步
            success : function(data) {
                var dataStr = $.parseJSON(data);//将String字符串转换成json
                alert(JSON.stringify(dataStr));
                if (dataStr.status == 200) {
                    alert("新增成功!");
                    loadApplication('analysis/index');
                } else {
                    alert("新增失败!");
                    loadApplication('analysis/index');
                }
            }
        });
    }
  • 相关阅读:
    香港中小学校资料
    几本图形学的书
    windows下MBCS和UNICODE编码的转换
    索引测试代码
    Ext.Net一些特别问题(有些未验证)
    MSSQL优化之索引优化(转)
    [转载红鱼儿]kbmmw 开发点滴:kbmmW服务端事务控制
    Devexpress VCL Build v2012 vol 12.2.2 发布
    [转载红鱼儿]kbmmw 开发点滴:kbmMWQuery插入记录
    2013年新年礼物CrossFPC 终于出来了
  • 原文地址:https://www.cnblogs.com/564085446java/p/4632776.html
Copyright © 2011-2022 走看看