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

时间:2016-08-19 10:43:59

标签: 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; 
        } 
    } 
} 

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

23 个答案:

答案 0 :(得分:82)

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

然后选择 身体 - &gt; form-data - &gt;输入您的参数名称(根据您的代码文件

在价值列旁边的右侧,会有下拉&#34;文字,文件&#34; ,选择文件。选择你的图像文件并发布。

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

答案 1 :(得分:36)

也许你可以这样做:

postman_file_upload_with_json

答案 2 :(得分:22)

我认为这是我们在这里缺少的视觉指南,突出显示文件的雅致但几乎看不见的浅灰色 - 白色下拉列表。

后选择POST然后选择Body->form-data然后找到下拉列表,然后选择'文件',然后才会神奇地出现'选择文件'按钮:

Postman POST file setup - (Text,File) dropdown highlighted

答案 3 :(得分:14)

像这样:

enter image description here

身体 - &gt; form-data - &gt;选择文件

你必须写&#34;文件&#34;而不是&#34; name&#34;

您也可以从Body发送JSON数据 - &gt;原始领域。 (只需粘贴JSON字符串)

答案 4 :(得分:7)

  1. 不要给任何标题。
  2. 将您的json数据放在.json文件中。
  3. 选择两个文件,一个是.txt文件,另一个是.json文件 为您的请求param键。

答案 5 :(得分:5)

如果有人需要:

正文 - &gt;形状数据

将字段名称添加为数组

enter image description here

答案 6 :(得分:5)

如果您需要 使用表单数据以 multipart 格式上传文件,并在同一 POST 请求

中发送 json 数据(Dto对象)

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

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

答案 7 :(得分:5)

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

postman image

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

postman dropdown

答案 8 :(得分:4)

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

邮递员:

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

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

答案 9 :(得分:2)

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

答案 10 :(得分:2)

发送包含包含json数据文件的mulitpart数据的方法如下,我们需要在邮递员正文选项卡中将各个json关键字段的content-type设置为“ application / json”,如下所示:

This link image will tell you about sending the image with json data

答案 11 :(得分:1)

Postman multipart form-data content-type

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

答案 12 :(得分:1)

正文 > 二进制 > 选择文件

enter image description here

答案 13 :(得分:1)

enter image description here

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

步骤如下:

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

就我而言:

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

答案 14 :(得分:0)

在弹簧支座侧使用以下代码:

@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

答案 15 :(得分:0)

我想从POSTMAN上传一个文本文件,该文件将调用我的POST api并进行上传。.使用CURL命令进行测试时,API可以正常工作。

但是无法像我尝试的那样使用POSTMAN:

enter image description here

当我从KEY下的下拉菜单中选择File时,看不到将参数名称从“ File”更改为“ fileToUpload”的选项。

因此从POSTMAN测试时,我的api抛出错误: 所需的请求部分'fileToUpload'不存在。

请更正(如有)。 任何线索都会有所帮助。

答案 16 :(得分:0)

答案 17 :(得分:0)

如果要将Id和File放在一个对象中,则可以将请求对象作为标准方法添加到方法中,然后在Postman中将Body设置为form-data,并在键之前添加请求对象名称。例如request.SessionId和request.File。

答案 18 :(得分:0)

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

  1. 需要传递文件才能上传: 按照Sumit的回答做了。

    请求类型: POST

    正文-> 表单数据

    在标题 KEY 下输入变量的名称(在我的后端代码中为“文件”)。

    在后端:

    file = request.files['file']

    在“文件”旁边,有一个下拉框,允许您在“文件”或“文本”之间进行选择。选择“文件”,并在标题 VALUE 下显示“选择文件”。单击此按钮将打开一个窗口,以选择文件。

2。 需要传递一个整数:

去:

参数

KEY 下输入

变量名(例如:id),在 VALUE

下输入其值(例如:1)

在后端:

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

工作!

答案 19 :(得分:0)

如果您要发出PUT请求,只需将所有内容作为POST请求执行,但添加_method =&gt; PUTform-data参数。

答案 20 :(得分:0)

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

同样要上传文件,您可以使用邮递员正文标签下的表单数据标签,您可以在其中以键值格式提供数据,并且您可以为每个键选择值文本/文件的类型。当你选择文件类型选项时,似乎上传了文件。

答案 21 :(得分:-1)

要在邮递员中将图像和json数据一起发送,您只需执行以下步骤。

  • 让您的方法发布到邮递员中
  • 转到正文部分,然后单击表单数据
  • 提供您的字段名,如下所示,从下拉列表中选择文件
  • 您还可以提供其他字段。
  • 现在只需将图像存储代码写入控制器中,如下所示。

邮递员: enter image description here

我的控制器:

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

就是这样,希望对您有帮助

答案 22 :(得分:-2)

在后端部分

Controller中的其余服务将混合使用@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