weixin_40165317
light_catcher
采纳率0%
2019-05-06 09:47 阅读 6.9k

表单提交multipart/form-data,获取非文件参数的问题

接收multipart/form-data类型的参数,post请求,我在后台接收到是这样的

图片说明

普通的getParameter()方法获取的是null,这个该怎么处理呢?求大佬赐教

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • qq_22847605 qq_22847605 2019-05-06 11:01
        DiskFileItemFactory factoy=new DiskFileItemFactory();
        ServletFileUpload sfu=new ServletFileUpload(factoy);
        //解析request
        try {
            List<FileItem> list=sfu.parseRequest(request);
            for (FileItem fileItem : list) {
                fileItem.getFieldName();
                //判断是表单元素还是文件元素
                fileItem.isFormField();
                System.out.println(fileItem.getString());
            }
    
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    点赞 2 评论 复制链接分享
  • u013254183 老铁咖啡 2019-05-06 10:09

    你的input框 的name 对应上实体类的字段,然后用FormData对象组装数据传到后台,用实体类获取就可以了啊

    //假如有个实体类 TestVo
    public class TestVo{
        private String data;
        private String password;
        //get set
    }
    
    <form id="addForm" class="form-horizontal" method="post" enctype="multipart/form-data">
        <input type="text" class="form-control" name="data" >
        <input type="text" class="form-control" name="password" >
    </form>
    
    //js
    var formFile = new FormData();
    $("#addForm :input").each(function(){
        formFile.append(this.name, this.value);
    });
    
    $.ajax({
        url:'xx/xx/insert', 
        data: formFile,
        type: "POST",
        dataType: "json",
        success: function (json) {
    
        }
    })
    
        //Controller
        @PostMapping(value = "insert", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public String insertData(HttpServletRequest request,TestVo entity,MultipartFile file){
            return "success";
        }
    
    点赞 评论 复制链接分享

相关推荐