복붙노트

[SPRING] 봄 부팅 + 각형 파일 업로드가 동일한 파일을 두 번 업로드 할 수 없음

SPRING

봄 부팅 + 각형 파일 업로드가 동일한 파일을 두 번 업로드 할 수 없음

네트워크의 크롬 오류

{ timeStamp: ......, status: 400
  error: 'Bad Request',
  message: 'Required request part 'file' is not present'
  path: 'url as hosted on Tomcat'
}

Spring 부트 Controller.java 파일

@PostMapping("/Post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") 
MultipartFile file){ String Message=""; try .......(and so on)}

내 각 구성 요소

<form [formGroup]="uploadForm" (ngSubmit) = "onSubmit()">
<input type="file" id="selectFile" formControlName="file1" name="selectFile"
(change)="fileEvent($event)"/>

<input type="submit" name="Submit"/>
</form>

Component.ts 파일

fileEvent(e) {
 this.data = e.target.files[0];
}
omSubmit() {
  let headers: any = new Headers();
  headers.append('Content-type', 'undefined');
  let formData = new FormData();
  formData.append("selectFile", this.data);
  const req5 = new HttpRequest('POST', 'url as hosted on TOMCAT', formData,
  reportProgress: true,
  responseType: 'text'
  });
  return this.httpClient.request(req5).subscribe(e => {(
  console.log(e);
  )}
}

실수는 어디에서 했습니까?

해결법

  1. ==============================

    1.이:

    이:

    formData.append("selectFile", this.formData);
    

    그 :

    formData.append("file", this.formData);
    

    원인

    public ResponseEntity<String> handleFileUpload(@RequestParam("file") 
    
  2. ==============================

    2.컨트롤러의 Param 주석은 file이라는 필드를 찾습니다.

    컨트롤러의 Param 주석은 file이라는 필드를 찾습니다.

    selectFile을 file로 변경하면 문제가 해결됩니다.

    formData.append("file", this.formData);
    

    매개 변수 이름은이 점에서 중요합니다. Java 및 Angular에서 동일해야합니다.

  3. from https://stackoverflow.com/questions/54462480/spring-boot-angular-file-upload-unable-to-upload-same-file-twice by cc-by-sa and MIT license