如何在邮递员中上传文件和json数据

Har*_*.N. 82 java json spring-mvc postman

我正在使用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; 
        } 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我需要在邮递员和文件中传递会话ID.我怎样才能做到这一点?

Sum*_*aya 117

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

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

在值列旁边的右侧,会有下拉列表"text,file",选择File.选择您的图像文件并发布.

对于其余的基于"文本"的参数,您可以像通常使用邮递员一样发布.只需输入参数名称并从右侧下拉菜单中选择"文本",然后输入任意值,点击发送按钮.应调用您的控制器方法.

  • 为什么`POST`?怎么样'PUT`? (4认同)
  • 我找到了我的解决方案。它不会自动映射到“RequestDto”。我将其视为字符串,解析“Json”并将其显式映射到“RequestDto”。 (4认同)
  • "不工作"是什么意思?为什么不显示代码让我们轻松调试问题? (3认同)
  • 我想将文件与 json 数据一起发送,而不是与表单数据一起发送,有什么办法可以做到吗? (3认同)
  • 我总是将文本部分作为`String`。为什么它不映射到我的 DTO?`@PostMapping(value = "/byImageFile",consumes = { "multipart/form-data" }) public ResponseEntity&lt;?&gt; postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) ` 在这种情况下,我根本无法发送邮递员的请求 (2认同)
  • 这是部分正确的。您还必须将每个 json 字段的内容类型设置为 application/json。您可以通过单击 Postman 内“批量编辑”链接旁边的省略号来完成此操作。 (2认同)

Chr*_*oll 45

我认为我们在这里缺少的视觉指南是,突出了File的雅致但几乎看不见的浅灰色白色下拉列表.

之后您选择File,然后选择Choose Files,然后找到下拉菜单,然后选择"文件",只有这样,"选择文件"按钮,奇迹般地出现:

Postman POST文件设置 - (文本,文件)下拉列表突出显示

  • 你是对的,因为这个用户界面对于非初学者来说是不可见的。感谢您提供视觉版本! (12认同)
  • 两年过去了,UI 没有任何改进。 (4认同)
  • 如果我有 XML 正文负载和附件怎么办? (2认同)
  • 2021 年末关于 UI 和几乎不可见的下拉菜单的更新:只有当 **该行** 的 **没有 ** 文本输入当前持有光标时,您才能看到该下拉菜单。因此,请移开 Tab 键以使其出现...... (2认同)

gce*_*gce 42

也许你可以这样做:

postman_file_upload_with_json

  • 你在那里设置了6个标题? (6认同)
  • 这个解决方案对我有用。没有传递任何标头并且工作正常。谢谢。传递 JSON 对我来说是棘手的部分。:) (2认同)
  • @GauravSharma 你是如何使用表单数据设置 JSON 的。您能分享一下输入请求吗? (2认同)

bur*_*gul 15

像这样 :

在此输入图像描述

正文 - >表单数据 - >选择文件

你必须写"文件"而不是"名字"

您也可以从Body - > raw字段发送JSON数据.(只需粘贴JSON字符串)

  • 该问题也要求上传json数据,这个答案中没有涉及. (9认同)
  • 实际上我需要传递一些值和文件邮递员一个服务是可能的 (3认同)

kyo*_*kyo 14

正文 > 二进制 > 选择文件

在此输入图像描述


小智 12

如果有人想以表单数据格式发送json数据只需要声明这样的变量

邮差:

如您所见,描述参数将采用基本的 json 格式,其结果是:

{ description: { spanish: 'hola', english: 'hello' } }
Run Code Online (Sandbox Code Playgroud)


小智 9

  1. 不要给任何标题.
  2. 将您的json数据放在.json文件中.
  3. 选择两个文件,一个是.txt文件,另一个是.json文件,用于请求参数密钥.


小智 9

您可以发送图像和可选/强制参数。

在邮递员中,有一个Params选项卡。


Ana*_*050 7

在弹簧休息侧使用以下代码:

@PostMapping(value = Constant.API_INITIAL + "/uploadFile")
    public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file,String jsonFileVo) {
        FileUploadVo fileUploadVo = null;
        try {
            fileUploadVo = new ObjectMapper().readValue(jsonFileVo, FileUploadVo.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Far*_*dLU 7

在此处输入图片说明

看到所有答案后我感到困惑,我找不到任何合适的屏幕截图来显示该Content Type专栏。过了一段时间,我自己找到了。希望这会帮助像我这样的人。

以下是步骤:

  1. 单击邮递员的红色标记区域。
  2. 现在检查绿色标记的选项 ( Content Type)。
  3. 现在在黄色标记区域更改搜索内容类型。

就我而言:

  1. invoice_id_ls(key) 包含json数据。
  2. documents包含file数据。
  3. placed_amount包含normal text字符串。

  • 是的,这是这个任务中缺失的部分。Spring 不想将 json 文本视为 json,直到手动设置其内容类型。 (2认同)

小智 6

如果您需要使用表单数据分段上传文件并在同一POST请求中发送json数据(Dto对象)

在Controller中将JSON对象作为String获取,并通过添加以下行使其反序列化

ContactDto contactDto  = new ObjectMapper().readValue(yourJSONString, ContactDto.class);
Run Code Online (Sandbox Code Playgroud)


小智 6

请按照从上到下的步骤进行操作,如下图所示。

邮递员形象

在第三步,您将找到类型选择的下拉菜单,如下图所示

邮递员下拉菜单


小智 5

如果有人需要:

正文->表单数据

将字段名称添加为数组

在此处输入图片说明


kub*_*lay 5

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


小智 5

邮递员多部分表单数据内容类型

从[SHOW COLUMNS]中选择[Content Type],然后将“ application / json”的content-type设置为json文本的参数。


Ahs*_*ooq 5

发送包含 json 数据的文件的多部分数据的方法如下,我们需要在 postman body 选项卡中将各个 json 键字段的内容类型设置为“application/json”,如下所示: 在此输入图像描述