«Тип содержимого« image / jpeg »не поддерживается для bodyType = org.springframework.web.multipart.MultipartFile» в Spring Boot - PullRequest
0 голосов
/ 08 января 2020

Я использую аннотацию @RequestPart для загрузки некоторых параметров и файла изображения.

Но я получаю ошибку ниже

Content type 'image/jpeg' not supported for bodyType=org.springframework.web.multipart.MultipartFile

Ниже приведен мой фрагмент кода. Если я пропущу часть файла во время запуска HTTP POST-запроса. Работает нормально.

Только во время передачи файла. Я получаю ошибку.

@PostMapping(value = "document/uploadFile", consumes = {"multipart/form-data"})
public void  uploadFile(@RequestPart(value = "name", required = true) String name,
                        @RequestPart(value = "fileType", required = true) String fileType,
                        @RequestPart(value = "file",required = false) MultipartFile file) 
                        {
                            ..logic to pick the data using POJO
                        }

application.yaml

## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring:
  servlet:
    multipart:
      enabled: true
      # Threshold after which files are written to disk.
      file-size-threshold : 2KB
      # Max file size.
      max-file-size: 10MB
      # Max Request Size
      max-request-size : 20MB

HTTP-сгенерированный код

POST /document/uploadFile HTTP/1.1
Host: localhost:8026
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name"

xyz
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="fileType"

jpeg
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="/C:/Users/XYZ/Pictures/Test.jpg"
Content-Type: image/jpeg

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW

Ввод из POSTMAN

Postman Body

Postman Header

Ошибка почтальона

{
    "timestamp": "2020-01-09T11:17:49.398+0000",
    "path": "/document/uploadFile",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'image/jpeg' not supported for bodyType=org.springframework.web.multipart.MultipartFile"
}

1 Ответ

0 голосов
/ 08 января 2020

Я сомневаюсь, что это проблема, но вам не хватает скобки здесь в конце потребляет = {"multipart / form-data"}

В любом случае с вашим текущим кодом это должно работать безупречно, я сделал локальный тест, так что, вероятно, ваши проблемы заключаются в том, как вы выполняете запрос.

Обязательно добавьте это как RequestHeader в ваш клиент для отдыха: Content-Type: multipart / form-data , или, если вы используете форму, вам нужно добавить ее следующим образом :

<form method="POST" action="/upload" enctype="multipart/form-data">
  <input type="file" name="file"/> 
  <input type="name" name="name"/> 
  <input type="fileType" name="fileType"/> 
  <button type="submit">Submit</button>
</form>
...