springmvc 上传文件并且带参数

发布于 2022-09-01 15:22:06 字数 1571 浏览 51 评论 0

直接上代码

    @RequestMapping(value = RestUrl.upload, method = RequestMethod.POST)
    @ResponseBody
    public ResultDTO<FilePathDTO> upload(@RequestParam(value = "file", required = true) MultipartFile file,@RequestParam(value=CommConstants.POST_JSON_DATA) String json) throws Exception{
        UploadFileParam param = JSON.parseObject(json, UploadFileParam.class);
        return commonService.upload(file,param);
    }

目前已经实现了请求后用requestparam接收参数
请求地址:http://localhost/server/sc/common/upload?postdata={shopId:100001,purpose:"commodity",type:"img"}

但是我想通过requestbody接收
请求地址:http://localhost/server/sc/common/upload body:{shopId:100001,purpose:"commodity",type:"img"}

后台:

    @RequestMapping(value = RestUrl.upload, method = RequestMethod.POST)
    @ResponseBody
    public ResultDTO<FilePathDTO> upload(@RequestParam(value = "file", required = true) MultipartFile file,@Requestbody UploadFileParam param) throws Exception{
        return commonService.upload(file,param);
    }

会出现415错误~~~貌似spring controller里 参数不能同时存在@requestparam和@requestbody

我比较想都通过requestbody进行操作,body里传的参数不受限制小大,并且安全。

或者能改成这样也可以

    @RequestMapping(value = RestUrl.upload, method = RequestMethod.POST)
    @ResponseBody
    public ResultDTO<FilePathDTO> upload(@Requestbody UploadFileParam param) throws Exception{
 //param里可以取到文件
        return commonService.upload(param);
    }

求详细可靠的解答~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

尸血腥色 2022-09-08 15:22:06

不确定是否理解题主的意思

使用你提到的这种方式 是完全没有问题的啊

@RequestMapping(value = RestUrl.upload, method = RequestMethod.POST)
    @ResponseBody
    public ResultDTO<FilePathDTO> upload(@Requestbody UploadFileParam param) throws Exception{
 //param里可以取到文件
        return commonService.upload(file,param);
    }

此时候你的vo的格式如下即可

public class UploadFileParam {
    private long shopId;
    private String purpose;
    private String type;
    private MultipartFile file; 

    // getter setter
}

前提是你用form表单的形式进行提交,据我所知json似乎是没有表达内嵌文件的格式的。

所以我推荐前端使用form表单提交这几个字段,后端使用你最后的方案就可以实现。

梦冥 2022-09-08 15:22:06

楼主,有没有完美一点解决方案了呢?

骄兵必败 2022-09-08 15:22:06

楼主使用requestBody的方式可以了吗

笑看君怀她人 2022-09-08 15:22:06

我也遇到和楼主一样的问题,上传图片时,同时想要用body传参数

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文