我正在使用Spring MVC,这是我的方法:

/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
            @RequestParam("name") String name,
            @RequestParam("file") MultipartFile file,
            HttpServletRequest request,
            HttpServletResponse response) {

    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();

            // Creating the directory to store file
            String rootPath = System.getProperty("catalina.home");
            File dir = new File(rootPath + File.separator + "tmpFiles");
            if (!dir.exists()) {
                dir.mkdirs();
            }

            // Create the file on server
            File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
            stream.write(bytes);
            stream.close();

            System.out.println("Server File Location=" + serverFile.getAbsolutePath());

            return null;
        } catch (Exception e) {
            return null;
        }
    }
}

我需要在邮递员和文件中传递会话id。我该怎么做呢?


当前回答

通过邮递员上传文件以及传递一些输入数据的步骤在下面的博客以及截图中进行了很好的讨论。在本博客中,api代码是用node js编写的。你可以再看一遍,看得更清楚些。

https://jksnu.blogspot.com/2021/09/how-to-create-post-request-with.html

其他回答

在postman中,将方法类型设置为POST。

然后选择 Body -> form-data ->输入参数名称(根据您的代码文件)

在Key字段的右侧,当鼠标悬停在它上面时,有一个下拉菜单可以在文本/文件之间进行选择。选择文件,然后“选择文件”按钮将出现在值字段。

对于其他基于“文本”的参数,你可以像邮递员一样发送它。只需输入参数名称,并从右边的下拉菜单中选择“文本”,并为它输入任何值,点击发送按钮。你的控制器方法应该被调用。

发送包含json数据文件的多部分数据的方法如下,我们需要在邮递员body选项卡中设置相应json关键字段的content-type为'application/json',如下所示:

如果您想发出PUT请求,只需将所有事情都作为POST请求进行,但将_method => PUT添加到您的form-data参数中。

如果有人需要:

Body -> form-data

将字段名添加为数组

后端部分

控制器中的Rest服务将混合@RequestPart和MultipartFile来服务这种Multipart + JSON请求。

@RequestMapping(value = "/executesampleservice", method = RequestMethod.POST,
consumes = {"multipart/form-data"})

@ResponseBody
public boolean yourEndpointMethod(
    @RequestPart("properties") @Valid ConnectionProperties properties,
    @RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {
return projectService.executeSampleService(properties, file);
}

前端:

formData = new FormData();

formData.append("file", document.forms[formName].file.files[0]);
formData.append('properties', new Blob([JSON.stringify({
            "name": "root",
            "password": "root"                    
        })], {
            type: "application/json"
        }));

如图所示(邮差请求):

点击查看邮差请求在表单数据为文件和json