Использование @RequestParam для multipartfile - это правильный путь?

Я разрабатываю приложение Spring mvc и хочу обработать многочастный запрос в моем контроллере. В запросе я передаюMultiPartFile Кроме того, в настоящее время я использую@RequestParam чтобы получить файл paramaeter, метод выглядит так:

@RequestMapping(method = RequestMethod.POST)
public def save(
        @ModelAttribute @Valid Product product,
        @RequestParam(value = "image", required = false) MultipartFile file) {
    .....
}

Вышеупомянутый код хорошо работает в моем сервисе, и файл попадает на серверную часть. Сейчас где-то я видел, что в случае файла нужно использовать@RequestPart аннотация вместо@RequestParam, Есть что-то плохое в использовании@RequestParam для файла? Или это может вызвать какие-либо ошибки в будущем?

Ответы на вопрос(2)

однако вы можете выбрать их, основываясь на том, как они интерпретируют аргументы внутренне.

Весенние Документы очень четко заявляет о разнице между ними:

Основное отличие состоит в том, что когда аргумент метода не является строкой,@RequestParam полагается на преобразование типов через зарегистрированный конвертер илиPropertyEditor в то время как@RequestPart опирается наHttpMessageConverters принимая во внимание заголовок Content-Type части запроса.@RequestPara скорее всего будет использоваться с полями формы имя-значение, в то время как@RequestPart скорее всего, будет использоваться с частями, содержащими более сложный контент (например, JSON, XML).

Решение Вопроса

@RequestParam сMultipart файл.

Аннотация @RequestParam также может использоваться для связывания части запроса «multipart / form-data» с аргументом метода, поддерживающим те же типы аргументов метода. Основное отличие состоит в том, что когда аргумент метода не является строкой, @RequestParam полагается на преобразование типа через зарегистрированный конвертер или PropertyEditor, в то время как @RequestPart полагается на HttpMessageConverters с учетом заголовка «Content-Type» части запроса. @RequestParam, вероятно, будет использоваться с полями формы имя-значение, в то время как @RequestPart, вероятно, будет использоваться с частями, содержащими более сложное содержимое (например, JSON, XML).

Увидетьhttp://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestPart.html

Ваш ответ на вопрос