Postman에서 파일 및 JSON 데이터를 업로드하는 방법은 무엇입니까?


135

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를 전달해야합니다. 어떻게 할 수 있습니까?

답변:


223

우편 배달부에서 메소드 유형을 POST로 설정하십시오. .

그런 다음 본문-> 양식 데이터-> 매개 변수 이름 입력 ( 파일 코드에 따른 )을 선택하십시오.

그리고 다음 값 열을 오른쪽에있을 것 "텍스트 파일"드롭 다운 선택 파일 합니다. 이미지 파일을 선택하고 게시하십시오.

나머지 "텍스트"기반 매개 변수의 경우 우편 배달부에서 일반적으로하는 것처럼 게시 할 수 있습니다. 매개 변수 이름을 입력하고 오른쪽 드롭 다운 메뉴에서 "텍스트"를 선택하고 값을 입력 한 다음 보내기 버튼을 누르십시오. 컨트롤러 메서드가 호출되어야합니다.


4
POST? 무엇에 대해 PUT?
Green

4
"작동하지 않음"이란 무엇을 의미합니까? 문제를 쉽게 디버깅 할 수 있도록 코드를 보여주지 않으시겠습니까?
Sumit Badaya 2017 년

2
나는 String항상 텍스트 부분을 얻습니다 . 내 DTO에 매핑되지 않는 이유는 무엇입니까? @PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) 이 경우에는 전혀 우편 배달부에서 requesst을 보낼 스피 수 없습니다
아룬 Gowda

@ArunGowda 새 질문으로 쿼리를 게시 해보십시오. 여기에있는 질문 포스터와 다르며 답변은 OP가 여기에 게시 한 질문과 관련이 있습니다.
Sumit Badaya

1
내 해결책을 찾았습니다. RequestDto자동으로 매핑되지 않습니다 . 나는 그것을 문자열로 취하고 파싱하고 명시 적으로 Json매핑했습니다 RequestDto.
Arun Gowda

112

누락 된 비주얼 가이드

당신은해야한다 첫번째 의 거의 보이지 않는 옅은 회색에 흰색 드롭 다운 찾을 File마법의 키를 잠금 해제 그 어떤 Choose Files버튼을 누릅니다.

후에 당신이 선택 POST, 다음 선택 Body->form-data, 다음 파일 드롭 다운 메뉴를 찾은 다음 '파일'을 선택, 단지 다음 버튼 마술 표시 '파일 선택'을합니다 :

Postman POST 파일 설정-(텍스트, 파일) 드롭 다운 강조 표시


1
이에 대한 UI가 시작되지 않은 사람에게는 보이지 않는다는 점에서 정확합니다. 비주얼 버전 감사합니다!
Vijay

XML 본문 페이로드와 첨부 파일이 있으면 어떻게합니까?
tuxErrante

gce의 대답은 쉽게 할 수 있다고 말하는 것 같습니다. 잘 모르겠습니다. 다중 부분 MIME 형식에 대해 학습하여 첨부 파일과 XML을 단일 문서로 결합하는 방법을 배워야 할 수도 있습니다. 너무 복잡하지는 않지만 여러 부분으로 된 MIME 바디를 손으로 만들 수 있습니다.
Chris F Carroll

2 년 후 UI는 전혀 개선되지 않았습니다.
Sabuncu

47

아마도 다음과 같이 할 수 있습니다.

postman_file_upload_with_json


8
거기에 어떤 6 개의 헤더를 설정 했습니까?
Green

1
이 솔루션은 저에게 효과적입니다. 헤더를 전달하지 않았으며 정상적으로 작동합니다. 감사. JSON 전달은 저에게 까다로운 부분이었습니다. :)
Gaurav Sharma

하가, 영리는 - : A는 추한하지만 슈퍼 편리 비트 그렇게 내 엔드 포인트를 변경
크리스 Koston

무슨 말을하는지 설명해 주시겠습니까? @ChrisKoston
tlalco

17

이렇게 :

여기에 이미지 설명 입력

본문-> 양식 데이터-> 파일 선택

"이름"대신 "파일"을 써야합니다.

또한 Body-> raw 필드에서 JSON 데이터를 보낼 수 있습니다. (JSON 문자열 붙여 넣기)


3
사실은 내가 한 서비스에 대한 우편 배달부의 일부 값과 파일을 전달해야하는 것이 가능하다
하리 크리슈 난 KN

1
헤더? 설정할 헤더는 무엇입니까?
Green

11
질문은 json 데이터 업로드도 요청하지만이 답변에서는 여기에서 다루지 않습니다.
Rohit

이 할 수있는 올바른 방법 stackoverflow.com/questions/21329426/...
dassum

10
  1. 헤더를 제공하지 마십시오.
  2. .json 파일에 json 데이터를 넣으십시오.
  3. 두 파일을 모두 선택하십시오. 하나는 .txt 파일이고 다른 하나는 요청 매개 변수 키에 대한 .json 파일입니다.

이것은 좋은 대답입니다 .. 이것은 다중 파일 페이로드에서 json 페이로드와 함께 여러 파일을 업로드해야하는 사용 사례에도 사용할 수 있습니다.
Kiran

파일과 JSON 데이터를 보내려는 경우 가장 정답입니다. 파일을 선택한 다음 단일 JSON 문자열 값으로 전달되는 JSON 데이터 또는 값을 분할하는 예가 작동하지 않습니다 (종점에 따라 다르지만 확인할 수 없음). 또한 여기에 언급되어 있습니다 : github.com/postmanlabs/postman-app-support/issues/3331
Anto

8

양식 데이터를 사용하여 멀티 파트에 파일을 업로드 하고 동일한 POST 요청 에 json 데이터 (Dto 객체)를 보내야하는 경우

컨트롤러에서 JSON 개체를 String으로 가져오고이 줄을 추가하여 Deserialize로 만듭니다.

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

1
사용 된 두 헤더가 무엇인지 말씀해 주시겠습니까?
Abhisek Roy

Content-Type : application / json Authorization : bearer (yourTokenString)
Ajay k

네, 작동했습니다. 감사. 아래 코드를 사용하고 작업했습니다. @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 (예외 e) {e.printStackTrace (); }
Anand_5050

contactDtoString의 Content-Type을 application / json으로 설정할 수 있습니다. 모든 키에
대해이

7

Postman 멀티 파트 양식 데이터 컨텐츠 유형

[SHOW COLUMNS]에서 [Content Type]을 선택한 다음 "application / json"의 내용 유형을 json 텍스트의 매개 변수로 설정합니다.



6

누군가 json 데이터를 양식 데이터 형식으로 보내려면 다음과 같은 변수를 선언하면됩니다.

우편 집배원:

보시다시피 description 매개 변수는 기본 json 형식이되며 그 결과는 다음과 같습니다.

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

2

파일과 정수를 모두 전달해야했습니다. 나는 이렇게했다 :

  1. 업로드 할 파일을 전달해야합니다. Sumit의 답변에 따라 수행했습니다.

    요청 유형 : POST

    본문 -> 양식 데이터

    KEY 제목 아래에 변수 이름을 입력했습니다 (백엔드 코드의 'file').

    백엔드에서 :

    file = request.files['file']

    '파일'옆에는 '파일'또는 '텍스트'중에서 선택할 수있는 드롭 다운 상자가 있습니다. '파일'을 선택하고 VALUE 제목 아래에 '파일 선택'이 나타납니다. 이것을 클릭하면 파일을 선택할 수있는 창이 열립니다.

2. 정수를 전달해야합니다.

갔다 :

매개 변수

KEY 아래에 입력 된 변수 이름 (예 : id) 및 VALUE 아래에 해당 값 (예 : 1)

백엔드에서 :

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

작동했습니다!


2

스프링 레스트 측에서 아래 코드를 사용하십시오.

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

여기에 이미지 설명 입력


2

각 양식 데이터 키에 대해 Content-Type을 설정할 수 있으며 오른쪽에 Content-Type 열을 추가하기위한 우편 배달부 버튼이 있으며 컨트롤러 내부의 문자열에서 json을 구문 분석 할 필요가 없습니다.


1

PUT요청 을하려면 모든 것을 POST요청으로 수행하되 _method=> PUTform-data매개 변수에 추가 하십시오 .



0

세션을 유지하기 위해 쿠키를 사용하는 경우 인터셉터 를 사용 하여 브라우저에서 우편 배달부로 쿠키를 공유 할 수 있습니다 .

또한 파일을 업로드하려면 우편 배달부의 본문 탭에서 양식 데이터 탭을 사용할 수 있습니다. 여기서 키-값 형식으로 데이터를 제공 할 수 있으며 각 키에 대해 값 텍스트 / 파일의 유형을 선택할 수 있습니다. 파일 유형을 선택하면 파일을 업로드하는 옵션이 나타납니다.


2
당신이 500을 받고 무엇을 위해 당신은 좀 더 세부 사항을 공유하시기 바랍니다 수 있습니다
Sandesh 자이나교

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.