ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Postman 中上传文件和 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;
        }
    }
}

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

一切都说完并完成后,这解决了我的问题,将 [] 添加到文件上传参数的名称中,例如。 image[] file[] upload[]
这是一个 2 分钟的快速视频教程 youtu.be/sFlPa_Vow3w

G
Greg T

在邮递员中,将方法类型设置为 POST。

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

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

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


为什么是POSTPUT 呢?
“不起作用”是什么意思?您为什么不向我们展示您的代码以轻松调试问题?
我总是将文本部分设为 String。为什么它没有映射到我的 DTO? @PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) 在这种情况下,我根本无法发送邮递员的请求
我找到了我的解决方案。它不会自动映射到RequestDto。我把它当作一个字符串,解析 Json 并将其显式映射到 RequestDto
这是部分正确的。您还必须将每个 json 字段的内容类型设置为 application/json。您可以通过单击 Postman 中“批量编辑”链接旁边的省略号来执行此操作。
C
Chris F Carroll

缺失的视觉指南

您必须首先找到 File 的几乎不可见的淡灰色下拉菜单,它是解锁 Choose Files 按钮的神奇钥匙。

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

https://i.stack.imgur.com/GygPZ.png


你是正确的,因为这个用户界面对非启动者是不可见的。谢谢你的视觉版!
如果我有一个 XML 正文有效负载和附件怎么办?
gce 的回答似乎是说你可以很容易地做到这一点?我不确定 。您可能必须通过了解多部分 mime 格式来学习如何将附件和 XML 组合成一个文档。这不是太复杂,您可以手动创建一个多部分的 mime 主体。
两年过去了,UI 没有任何改进。
2021 年末有关 UI 和几乎不可见的下拉菜单的更新:如果该行的文本输入当前没有光标,您只能看到该下拉菜单。所以用tab键移开让它出现......
g
gce

也许你可以这样做:

https://i.stack.imgur.com/CcnSb.png


你在那里设置了哪些 6 个标题?
这个解决方案对我有用。没有通过任何标题,它工作正常。谢谢。传递 JSON 对我来说是棘手的部分。 :)
哈,聪明 - 改变了我的端点来做到这一点:)有点难看但超级方便
你能解释一下你在说什么吗? @克里斯科斯顿
@GauravSharma 您是如何使用表单数据设置 JSON 的。你能分享输入请求吗?
b
burakozgul

像这样 :

https://i.stack.imgur.com/OvBFy.png

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

您必须写“文件”而不是“名称”

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

https://i.stack.imgur.com/qltDv.png


实际上我需要在邮递员中为一项服务传递一些值和文件是可能的
标头?设置什么标题?
该问题还要求上传 json 数据,此答案中未涵盖此内容。
执行此操作的正确方法:stackoverflow.com/questions/21329426/…
文件+(json)?
F
Farid Chowdhury

https://i.stack.imgur.com/5y67n.jpg

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

以下是步骤:

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

就我而言:

invoice_id_ls (key) 包含 json 数据。文件包含文件数据。 placed_amount 包含普通的文本字符串。


文件名与要包含在附加 JSON 中的文件有什么关系?
是的,这是这个任务的缺失部分。在手动设置其内容类型之前,Spring 不想将 json 文本视为 json。
这个解决方案对我有用,这是这篇文章中最清晰的答案。通常我的请求正文有几个字段,因此必须在 CONTENT_TYPE 列中将几个键值对设置为 application/json。在同一列中将文件保留为 auto
这是发送文件的正确答案 + 在表单数据发布请求中提交的 json 文本。太感谢了!!!
o
otamega

https://i.stack.imgur.com/YTh8M.png

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


R
Rohit Thakur

不要给出任何标题。将您的 json 数据放入 .json 文件中。选择两个文件,一个是 .txt 文件,另一个是 .json 文件作为请求参数键。


这是一个很好的答案。这也可以用于必须上传多个文件以及多部分有效负载中的 json 有效负载的用例。
如果您想发送文件以及 JSON 数据,这是最正确的答案。显示选择文件然后将 JSON 数据作为单个 JSON 字符串值传递或将值拆分的示例不起作用(可能取决于端点,但我无法验证这一点)。这里也提到了:github.com/postmanlabs/postman-app-support/issues/3331
m
miselking

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

邮差:

https://i.stack.imgur.com/e6d3Q.png

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

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

A
Ankur prajapati

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

https://i.stack.imgur.com/lice6.png

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

https://i.stack.imgur.com/qhFjC.png


能否请您帮忙解释一下或向我指出如何使用这些 API 密钥来验证 api 的资源?我在一些项目中使用 laravel admin,它的基本代码在如何使用像护照这样的库来生成 API 令牌方面相当混乱。非常感谢
您可以通过邮递员的授权选项卡。在该 Select Type: API Key 中,然后在键和值文本框中传递值。完成此操作后,如果您通过正文传递参数,它将自动获得身份验证。
c
code-8

正文 > 二进制 > 选择文件

https://i.stack.imgur.com/jyDsF.png


E
EstevaoLuis

https://i.stack.imgur.com/X1Lym.png

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

在 Controller 中获取您的 JSON 对象作为 String 并通过添加此行使其反序列化

ContactDto contactDto  = new ObjectMapper().readValue(yourJSONString, ContactDto.class);

你能告诉我使用的两个标题是什么吗?
内容类型:应用程序/json 授权:不记名 (yourTokenString)
是的,它奏效了。谢谢。我使用下面的代码并工作:@PostMapping(value = Constant.API_INITIAL + "/uploadFile") public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file,String jsonFileVo) { FileUploadVo fileUploadVo = null;尝试 { fileUploadVo = new ObjectMapper().readValue(jsonFileVo, FileUploadVo.class); } 捕捉(异常 e){ e.printStackTrace(); }
您可以将 contactDtoString 的 Content-Type 设置为 application/json,您可以为每个键执行此操作
M
Marcos Dantas

如果有人需要:

正文 -> 表单数据

将字段名称添加为数组

https://i.stack.imgur.com/AwTNO.png


A
Anand_5050

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

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

https://i.stack.imgur.com/lpV4c.png


k
kubilay

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


这就是我一直在寻找的。我很困惑为什么它在 POST 上有效,但在 PUT. 之前无效。谢谢!!
@kubilay 这没用
v
vinci mojamdar

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

需要传递要上传的文件:按照 Sumit 的回答进行。请求类型:POST Body -> form-data 在标题 KEY 下,输入变量的名称(我的后端代码中的“文件”)。在后端:file = request.files['file'] 在“file”旁边,有一个下拉框,您可以在“File”或“Text”之间进行选择。选择“文件”并在“值”标题下出现“选择文件”。单击此打开一个窗口以选择文件。

2.需要传递一个整数:

去了:

参数

在 KEY 下输入变量名(例如:id),在 VALUE 下输入其值(例如:1)

在后端:

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

工作!


这对我来说file = request.files['file']。谢谢,拯救了我的一天
A
Ahsan Farooq

https://i.stack.imgur.com/yqJGU.png


H
Hritcu Andrei

每个表单数据键都可以设置Content-Type,右边有个邮递员按钮可以添加Content-Type列,而且你不用在Controller里面从字符串解析json。


R
Rizka Khoirotunnisa

首先,在方法中设置帖子并填写链接API

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


正如目前所写的那样,您的答案尚不清楚。请edit添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以找到有关如何写出好答案的更多信息in the help center
S
Sandesh Jain

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

另外要上传文件,您可以使用 postman 上 body 选项卡下的 form-data 选项卡,您可以在其中提供键值格式的数据,并且您可以为每个键选择值文本/文件的类型。当您选择文件类型选项时出现上传文件。


对于你得到的500。你能分享更多细节吗
T
Tom McDonough

如果您希望 Id 和 File 在一个对象中,您可以将您的请求对象作为标准添加到一种方法中,然后在 Postman 中将 Body 设置为表单数据并在您的键前面加上您的请求对象名称。例如 request.SessionId 和 request.File。


j
jitendra singh

通过邮递员上传文件以及传递一些输入数据的步骤在下面的博客以及屏幕截图中得到了很好的讨论。在这篇博客中,api代码是用node js编写的。您可以通过它一次以获得更清晰的信息。

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


K
Kai-Sheng Yang

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

在邮递员中,有 Params 标签。

https://i.ibb.co/xDQ0KZL/ParamTab.jpg


A
Anshu Kumar

在后端部分

Controller 中的 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"
        }));

参见图片(POSTMAN 请求):

Click to view Postman request in form data for both file and json


k
kishan maharana

要在邮递员中发送图像和 json 数据,您只需按照以下步骤操作。

制定您在邮递员中发帖的方法

转到正文部分并单击表单数据

提供您的字段名称 从下拉列表中选择文件,如下所示

您还可以提供您的其他字段。

现在只需在控制器中编写图像存储代码,如下所示。

https://i.stack.imgur.com/k3m0y.png

我的控制器:

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']]);
}

就是这样希望对你有帮助