如何上传文件和JSON数据在邮差?

我正在使用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;
}
}
}
< p > < br > 我需要在邮递员和文件中传递会话id。我该怎么做呢?< / p >
836223 次浏览

像这样:

enter image description here

身体→格式→选择文件

你必须写“文件”;而不是"name"

你也可以从Body ->原始的领域。(只需粘贴JSON字符串)

enter image description here

如果你使用cookie来保持会话,你可以使用拦截器从浏览器共享cookie给邮递员。

也可以上传一个文件,你可以使用form-data标签下的正文标签邮递员,在其中,你可以提供数据在键值格式和每个键,你可以选择值文本/文件的类型。当你选择文件类型时,出现上传文件的选项。

在postman中,将方法类型设置为帖子

< p >然后选择 身体→格式→输入参数名称(文件根据您的代码)

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

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

也许你可以这样做:

postman_file_upload_with_json

  1. 不要给出任何标题。
  2. 将json数据放在.json文件中。
  3. 选择你的两个文件,一个是你的.txt文件,另一个是.json文件

如果有人需要:

Body -> form-data

将字段名添加为数组

enter image description here

缺失的视觉指南

你必须第一个File找到几乎看不见的浅灰色下拉菜单,这是解锁Choose Files按钮的魔法钥匙。

你选择POST然后选择Body->form-data然后找到文件下拉菜单,然后选择“文件”,只有这样将“选择文件”按钮神奇地出现:

邮递员POST文件设置-(文本,文件)下拉高亮

如果你想做一个PUT请求,只要做一个POST请求,但添加_method => PUT到你的form-data参数。

如果有人想以form-data格式发送json数据,只需要像这样声明变量

邮差:

如你所见,description参数将是基本的json格式,结果是:

{ description: { spanish: 'hola', english: 'hello' } }

 ></a></p>


<p>如果你需要喜欢
在<strong>多部分</strong>中使用表单数据上传文件,并在相同的<strong>帖子</strong>中发送<strong>json</strong>数据(Dto对象)请求</p>


<p>在控制器中获取JSON对象作为字符串,并通过添加这一行使其反序列化</p>


<pre><code>ContactDto contactDto  = new ObjectMapper().readValue(yourJSONString, ContactDto.class);
</code></pre></div>
                                                                            </div>
                                </div>
                            </div>
                        </div>
                                                <div class=

我需要传递两个:一个文件和一个整数。我是这样做的:

  1. 需要传递一个文件来上传: 按照Sumit的答案。

    请求类型:帖子

    __abc0 -> __abc1

    关键标题下,输入变量的名称(后端代码中的'file')。

    在后端:

    file = request.files['file']

    在“文件”旁边,有一个下拉框,允许你在“文件”或“文本”之间进行选择。选择“文件”,在价值标题下,“选择文件”出现。点击这个,打开一个窗口选择文件

< p > 2。 需要传递一个整数:

去:

参数个数

关键下输入变量名(例如:id),在价值下输入变量值(例如:1)

在后端:

id = request.args.get('id')

成功了!

邮递员multipart form-data content-type .

在[SHOW COLUMNS]中选择[Content Type],然后将“application/json”的Content - Type设置为json text参数。

在弹簧架侧使用以下代码:

@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();
}

enter image description here

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

对于每个可以设置Content-Type的表单数据键,右侧有一个邮递员按钮来添加Content-Type列,并且您不必从控制器中的字符串解析json。

后端部分

控制器中的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的表单数据中单击查看邮差请求

如果你想把Id和File放在一个对象中,你可以把请求对象添加到一个标准的方法中,然后在Postman中设置Body为form-data,并在键前加上请求对象的名称。如请求。SessionId和request.File。

要在postman中发送图像和json数据,您只需要遵循以下步骤。

  • 把你的方法交给邮递员
  • 转到正文部分并单击form-data
  • 从下拉列表中选择文件,如下所示
  • 您还可以提供其他字段。
  • 现在只需在控制器中编写图像存储代码,如下所示。

< >强邮差: enter image description here < / p >

我的控制器:

public function sendImage(Request $request)
{
$image=new ImgUpload;
if($request->hasfile('image'))
{
$file=$request->file('image');
$extension=$file->getClientOriginalExtension();
$filename=time().'.'.$extension;
$file->move('public/upload/userimg/',$filename);
$image->image=$filename;
}
else
{
return $request;
$image->image='';
}
$image->save();
return response()->json(['response'=>['code'=>'200','message'=>'image uploaded successfull']]);
}

就是这些,希望对你有所帮助

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

邮差图片

在第三步,你会发现下拉类型选择如下图所示

邮递员下拉

enter image description here

在看到所有的答案后,我感到困惑,我找不到任何合适的截图来带来Content Type列。过了一段时间,我自己找到了它。希望这能帮助到像我这样的人。

以下是步骤:

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

在我的例子中:

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

身体比;二进制的在选择文件

enter image description here

首先,设置post in方法和填充链接API

然后选择Body ->格式→输入参数名(根据代码输入文件)

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

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

您可以同时发送Image和可选/必选参数。

在postman中,有Params标签。

.