@RequestPart 解决同时上传文件和json的解决方案

之前公司有一个上传功能是带有业务逻辑的,除了文件之外还有一个json信息的请求,当时是把json信息当成字符串用param方式传递给后台,后台再手动序列化一直觉得不太优雅,专研许久使用@RequestPart 解决了问题但是其中前后端都有一些需要注意的地方,话不多说上源码

前端

<body>
    <input type="file" id="file" name="file"/>
    <button id="button" name="">上传</button>
</body>


$(function () {
    $("#button").click(function () {
        //构建formData
        var formData = new FormData();
        //文件部分
        var file = document.getElementById("file").files[0];
        formData.append("file", file);
        //json部分
        var imageInfo = JSON.stringify({
            "width": "240",
            "height": "320"
        });
        //这里包装 可以直接转换成对象
        formData.append('imageInfo', new Blob([imageInfo], {type: "application/json"}));

        $.ajax({
            url: "/test/upload",
            type: "post",
            //忽略contentType
            contentType: false,
            //取消序列换 formData本来就是序列化好的
            processData: false,
            dataType: "json",
            data: formData,
            success: function (response) {
                alert(response);
            },
            error: function () {

            }
        });
    });
})

后端

@PostMapping("upload")
public ImageInfo upload(@RequestPart("file") MultipartFile file,@RequestPart("imageInfo") ImageInfo imageInfo) {
    System.out.println(imageInfo);
    return imageInfo;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,676评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,032评论 3 119
  • 说的编程思想,我们很多人大概都听过什么函数式编程、链式编程、响应式编程这三种编程思想,可能有些人不太清楚。之前我也...
    尘峰的小孩阅读 281评论 0 0
  • 我竟然大二了。 说实话我还没能接受我已经大二了。 可是我真的大二了。 高考前的拼命的的学习,高考时的不正常心态,高...
    和铃鱼阅读 306评论 0 1