Получение загруженного файла от клиента, отдых

Я отправляю на сервер файл, это следующий код загрузки:

export class FileUploadComponent {

  @Input() multiple: boolean = false;
  @ViewChild('fileInput') inputEl: ElementRef;

  constructor(private http: Http) {}

  upload() {
    let inputEl: HTMLInputElement = this.inputEl.nativeElement;
    let fileCount: number = inputEl.files.length;
    let formData = new FormData();
    if (fileCount > 0) { // a file was selected
      for (let i = 0; i < fileCount; i++) {
        formData.append('file[]', inputEl.files.item(i));
      }
      this.http
        .post('http://localhost:8080/upload', formData).toPromise().then(() => console.log('success')).catch(() => console.log('error'));
    }
  }
}

теперь на бэкэндсайде я хотел бы получить его через контроллер, но я не знаю, как сопоставить свойство файла, следующее дает нуль:

 public @ResponseBody String handleFileUpload(@RequestBody MultipartFile file)

person filemonczyk    schedule 06.06.2017    source источник
comment
Возможный дубликат загрузки файлового массива AngularJS Formdata   -  person David Florez    schedule 06.06.2017


Ответы (1)


Ваша подпись метода неверна.

Параметры аннотации @RequestBody сопоставляются с телом HTTP-запроса.

Параметры аннотации @RequestParam сопоставляются с конкретными параметрами запроса сервлета.

Используйте следующее:

public @ResponseBody String handleFileUpload(@RequestParam MultipartFile file)

Если вы отправляете несколько, используйте массив:

public @ResponseBody String handleFileUpload(@RequestParam MultipartFile[[] file)
person YuVi    schedule 07.06.2017