提交multipart/form-data类型数据

提交multipart/form-data类型数据

@(spring mvc)[文件上传|附加信息]

举例:工行签名证书上传保存

说明:框架使用的是spring mvc 4,接口测试工具使用postman,本文要实现的功能有:

  • 文件上传 :文件上传信息填写在form-data区域,字段名即文件名,文件内容通过postman控件选择,存储在mysql数据库中类型为BLOB,对应的java类属性为byte[]
  • 文件存储 :直接将文件存储到数据库,而非存储文件的URL;
  • 其他信息 :同时上传文件的其他附加信息,也一并保存到数据库。

postman测试请求

postman接口地址:

https://www.getpostman.com/collections/3ff9e71924f3facec051


controller源码

@RequestMapping(value = "business/{businessId}/{company}/mode", method = RequestMethod.POST,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity create(@PathVariable("businessId") Long businessId,
                                 @PathVariable("company") String company,
                                 @RequestParam("name") String name,
                                 @RequestParam("password") String privatePassword,
                                 @RequestParam("account") String account,
                                 HttpServletRequest request) {
        try {
            boolean passed = CompanyUtil.checkCompany(company);
            if (passed) {
                PayModeDto modeDto = new PayModeDto();
                modeDto.setName(name);
                modeDto.setBusinessId(businessId);
                modeDto.setPrivatePassword(privatePassword);
                modeDto.setAccount(account);

                DiskFileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                List items = upload.parseRequest(request);
                for (Object object : items) {
                    FileItem fileItem = (FileItem) object;
                    System.out.println(fileItem.toString());
                    if (fileItem.getFieldName().equals("publicKey")) {
                        modeDto.setPublicKey(fileItem.get());
                    } else if (fileItem.getFieldName().equals("privateKey")) {
                        modeDto.setPrivateKey(fileItem.get());
                    }
                }
                logger.info("客户端将创建的支付配置:{}", JSONObject.toJSONString(modeDto));
                if (company.equals(IConstant.ICBC)) {
                    logger.info("将要添加的是工商银行支付配置");
                    payModeService.createICBCPayMode(modeDto);
                    logger.info("成功添加工行支付配置");
                } else if (company.equals(IConstant.MOBAO)) {
                    logger.info("将要添加的是魔宝支付配置");
                    payModeService.createMobaoPayMode(modeDto);
                    logger.info("成功添加魔宝支付配置");
                }
                return new ResponseEntity(new Bingo(), HttpStatus.CREATED);
            } else {
                logger.info("校验支付公司简称路径变量{}不通过", company);
                JSONObject error = new JSONObject();
                error.put("ErrorCode", 400);
                error.put("ErrorMsg", "公司简称填写错误");
                return new ResponseEntity(error, HttpStatus.BAD_REQUEST);
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
            logger.info(e.getMessage());
            JSONObject error = new JSONObject();
            error.put("ErrorCode", 400);
            error.put("ErrorMsg", e.getMessage());
            return new ResponseEntity(error, HttpStatus.BAD_REQUEST);
        } catch (CoreException e) {
            e.printStackTrace();
            logger.info(JSONObject.toJSONString(e));
            return new ResponseEntity(e, HttpStatus.BAD_REQUEST);
        } catch (Exception e) {
            e.printStackTrace();
            logger.info(e.getMessage());
            JSONObject error = new JSONObject();
            error.put("ErrorCode", 400);
            error.put("ErrorMsg", e.getMessage());
            return new ResponseEntity(error, HttpStatus.BAD_REQUEST);
        }
    }

我的联系方式

  • Q Q:1250052380
  • 邮箱:[email protected]
时间: 2024-11-04 13:41:39

提交multipart/form-data类型数据的相关文章

表单提交数据格式form data

前言: 最近遇到的最多的问题就是表单提交数据格式问题了. 常见的三种表单提交数据格式,分别举例说明:(项目是vue的框架) 1.application/x-www-form-urlencoded 提交表单方法,js代码如下: submitForm() { let data = 'title="标题"&content="内容"&pic[]="image1"&pic[]="image2"&pic[]

Jquery实现只提交部分Form表单数据

Jquery文档中serialize()方法的描述为:序列表表格内容为字符串. 以下是测试代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Jquery实现只提交部分Form

data类型的数据抽取年份或月份的函数

orcel里提供了按要求抽取data类型数据的函数,如,只需要年份,那么就可以用(A表里有一个data_str列,是data型.) select extract(month from data_str) newmonth from A where extract(year from data_str)='2015' group by extract(month from data_str); 上面做的就是将A表里的2015年的数据按照月份进行分组.

golang解析http multipart/form的三种方式

multipart/form-data 顾名思义可以上传多个form-data 并且用分隔符进行分割,多用于文件上传 1. http  multipart/form-data 请求样例 POST /handle HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 182537 Cache-Control: max-age=0 Content-Type: multipart/form-data; boundary

提交application/x-www-form-urlencoded类型数据

提交application/x-www-form-urlencoded类型数据 发送application/x-www-form-urlencoded接收通知 举例:发送通知以及接收通知 说明:此demo非常简化,使用tomcat服务器运行,本文说明: 包含文件 1.SendNotification.jsp:发送通知页面,表单提交数据的类型为multipart/x-www-form-urlencoded 2.RecvNotification.jsp:接收通知页面 3.页面简单使用了Bootstr

ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet

实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //display属性: editor:grid表格可以编辑其类容: //select类型:select+render实现选择填充效果 editor:{ type:"select", data:[{id:"1",text:"品牌一"},{id:"2&q

jquery序列化form表单使用ajax提交后处理返回的json数据

这篇文章主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下 1.返回json字符串: ** 将一个字符串输出到浏览器 */    protected void writeJson(String json) {        PrintWriter pw = null;        try {            servletResponse.setContentType("text/plain;charset=UTF-8"

Core Data存储自定义类型数据

目录: 一.使用CoreData存储基本数据 二.使用CoreData存储自定义类型数据 简单介绍CoreData CoreData是iOS编程中使用持久化数据存储的一种方式,我们知道CoreData并不是数据库本身,而是Apple提供的对象持久化技术--Object Persistent technology.CoreData框架为我们的数据变更.管理.对象存储.读取和恢复提供了支持.下面我们来尝试创建一个简单的CoreData Project. 操作 1. 打开x-code,为你的proje

如何用ajax提交多组同样的数据(数组)到后台?

我在AJAX中这样写 $("#subbutton").click(function(){          var machineCode_1=$("#machineCode_1").val();          var machineCode_2=$("#machineCode_2").val();          var machineCode_3=$("#machineCode_3").val();