专栏首页JMCuiJava 处理 multipart/mixed 请求

Java 处理 multipart/mixed 请求

一、multipart/mixed 请求

  multipart/mixed 和 multipart/form-date 都是多文件上传的格式。区别在于,multipart/form-data 是一种特殊的表单上传,其中普通字段的内容还是按照一般的请求体构建,文件字段的内容按照 multipart 请求体构建,后端在处理 multipart/form-data 请求的时候,会在服务器上建立临时的文件夹存放文件内容,可参看这篇文章。而 multipart/mixed 请求会将每个字段的内容,不管是普通字段还是文件字段,都变成 Stream 流的方式去上传,因此后端在处理 multipart/mixed 的内容时,必须从 Stream流中处理。

二、Servlet 处理 multipart/mixed 请求

            Part signPart = request.getPart(Constants.SIGN_KEY);
            Part appidPart = request.getPart(Constants.APPID_KEY);
            Part noncestrPart = request.getPart(Constants.NONCESTR_KEY);
            Map<String, String[]> paramMap = new HashMap<>(8);
            paramMap.put(signPart.getName(), new String[]{stream2Str(signPart.getInputStream())});
            paramMap.put(appidPart.getName(), new String[]{stream2Str(appidPart.getInputStream())});
            paramMap.put(noncestrPart.getName(), new String[]{stream2Str(noncestrPart.getInputStream())});
    private String stream2Str(InputStream inputStream) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
            String line;
            StringBuffer buffer = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
            return buffer.toString();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "";
    }

三、SpringMVC 处理 multipart/mixed 请求

    @ResponseBody
    @RequestMapping(value = {"/token/user/uploadImage.yueyue", "/token/user/uploadImage"}, method = {RequestMethod.POST, RequestMethod.GET})
    public AjaxList uploadImage(
             @RequestPart (required = false) String token,
             @RequestPart (required = false) String sign,
             @RequestPart (required = false) String appid,
             @RequestPart (required = false) String noncestr,
             @RequestPart MultipartFile avatar, HttpServletRequest request) {

             }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 项目工具类

    一、前言     在工作中,难免遇到各种各样的问题,每个人似乎都有一套自己的解决方案。而我,又不想每次解决完问题就把东西扔了,捡了芝麻,丢了西瓜,什么时候才能进...

    JMCui
  • 使用 Lombok 优雅编码

        Lombok 是一个 java 库,能以简单的注解形式来简化 java 代码,提高开发人员的开发效率。

    JMCui
  • QBC查询

    1、基本语法 session.beginTransaction(); Criteria criteria = session.createCriteria(Pe...

    JMCui
  • 快速学习JasperReport-数据填充

    我们介绍了如何使用JasperReport来生成简单的文本报表,正式企业开发中动态数据展示也是报表中最重要的一环,接下来我们共同研究的就是填充动态数据到PDF报...

    cwl_java
  • CVPR 2019 | PointConv:在点云上高效实现卷积操作

    在机器人、自动驾驶和虚拟/增强现实应用中,直接获取 3D 数据的传感器日趋普遍。由于深度信息可以消除 2D 图像中的大量分割不确定性(segmentation ...

    机器之心
  • 深度学习的卷积

    近年来,随着一些强大、通用的深度学习框架相继出现,把卷积层添加进深度学习模型也成了可能。这个过程很简单,只需一行代码就能实现。但是,你真的理解“卷积”是什么吗?...

    bye
  • 人工智能|卷积及其图像处理的运用

    这个公式和概率论中的概率函数表达式很相似,只不过这个概率是由两个函数组成,也可以理解成是一个新的事件由两个独立事件组合而成,这样一来,卷积的意义就很明显了,它代...

    算法与编程之美
  • Android Volley扩展实现支持进度条的文件上传功能

    volley是一个轻量级的开源网络通信框架,开源的好处就是可以自由定制自己需要的jar包。volley里网络通信时android2.3以上用的HttpUrlCo...

    砸漏
  • MissingFormatArgumentException: Format Specifier 'S'

    贴出一个简单的异常,分析一下原因,以及推荐一个相对好一些的替代方法。 如下,如果我们进行字符串格式化提供的值的数量少于字符串格式符(%s)的数量,就会抛出Mis...

    技术小黑屋
  • 如何利用深度学习识别千万张图片?

    首先我们来谈一下什么是卷积神经网络,相信在深度学习中这是最重要的概念,首先你可以把卷积想象成一种混合信息的手段。想象一下装满信息的两个桶,我们把它们倒入一个桶中...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券