【问题标题】:Receiving a MultiPart file and JSON data using Spring and AngularJS使用 Spring 和 AngularJS 接收 MultiPart 文件和 JSON 数据
【发布时间】:2016-09-08 18:07:56
【问题描述】:

下面是我的控制器:

@RequestMapping(value="/upload", method=RequestMethod.PUT)
public ResponseEntity<String> handleFileUpload(
            @RequestParam("file") MultipartFile file,
            @RequestParam("data") String campaignJson,
            Principal principal) throws JsonParseException, JsonMappingException, IOException {

我希望能够接收MultipartFile 以及包含与文件关联的数据(标题、描述等)的 JSON 字符串。

我可以让MultipartFile 上传自己工作,我可以接收 JSON 字符串并自行解析它,但是当我将它们放在 1 个控制器中时,它会失败。每当我打印出String campaignJson 时,它会显示[object Object] 而不是我发送的数据(当我打印出以角度发送的数据时,它是正确的JSON 格式。)

我尝试过@RequestBody@RequestParam@RequestPart,但无济于事。

我的问题是:如何在一个 Spring 控制器中同时接收 MultipartFile 和 JSON 格式的数据?

【问题讨论】:

    标签: java angularjs json spring


    【解决方案1】:

    这对我有用:

    @RequestMapping(value = "/{id}/upload", method = RequestMethod.PUT)
    public DocumentResource uploadPut(@PathVariable("id") Long id,
            MultipartHttpServletRequest request,
            HttpServletResponse response) {
    
            String next = request.getFileNames().next();
            MultipartFile file = request.getFile(next);
            ..... 
    }
    

    编辑: 使用MultipartHttpServletRequest 不应以任何方式限制您使用其他@PathVariables@RequestParams,因此应该可以传递标题和描述。

    我用它用AngularJS和FileUploader上传多张图片

    (angular-file-upload v1.1.5)

    喜欢这个

     var uploader = new FileUploader({
            url: config.apiUrl('/machine/' + $scope.id + '/images/'),
            method: "post",
            queueLimit: maxFiles
        });
    

    【讨论】:

    • @RequestParam("file") MultipartFile file 可自行上传。您的方法是否适用于上传媒体以及媒体表单数据?例如,如果我以MultipartFile 的形式上传视频并且我希望视频具有标题和描述,那么解析MultipartHttpServletRequest 是否允许我获取视频和标题/描述以及任何其他字段用户输入?
    猜你喜欢
    • 2019-03-19
    • 2014-04-19
    • 1970-01-01
    • 2016-10-25
    • 2016-06-14
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多