欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 处理 multipart/mixed 请求

程序员文章站 2022-05-21 17:41:48
一、multipart/mixed 请求   multipart/mixed 和 multipart/form date 都是多文件上传的格式。区别在于,multipart/form data 是一种特殊的表单上传,其中普通字段的内容还是按照一般的请求体构建,文件字段的内容按照 multi ......

一、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) {

             }