MultipartFile объект всегда нулевой - PullRequest
0 голосов
/ 08 декабря 2018

Что я хотел сделать: Когда пользователь загружает файл *.json (фактически три, но два других опускаются, чтобы сначала протестировать случай с одним файлом), контроллер анализирует JSON и изменяет значение вбаза данных.Файл не будет нигде сохранен, но будет просто удален после прочтения.

Метод контроллера:

@RequestMapping(value = "/update/post", method = RequestMethod.POST, consumes = "multipart/form-data")
public String updateP
        (
                Model model,
                @RequestParam(value = "dancer_info", required = false) MultipartFile dancerInfo,
                // if required set to true, it says "Required request part 'dancer_info' is not present".
                HttpServletRequest request
        )
{        

    if (dancerInfo == null)
    {
        model.addAttribute("dancer", "Null");
    }
    else
    {
        String jsonDancerInfo = dancerInfo.toString();
        model.addAttribute("dancer", jsonDancerInfo);
    }

    return "update_complete";
}

Форма в update.html (с использованиемBootstrap 4):

<form th:action="@{/update/post}" method="post" enctype="multipart/form-data">
                <div class="input-group mb-3">
                    <div class="custom-file">
                        <input type="file" class="custom-file-input" id="dancer_info" name="dancer_info">
                        <label class="custom-file-label" for="dancer_info">dancer_info.json</label>
                    </div>
                </div>                
                <div class="input-group mb-3 justify-content-center align-items-center">
                    <input type="submit" class="btn btn-primary" value="Submit" />
                </div>
            </form>

MultipartResolver bean:

@Bean
public MultipartResolver multipartResolver()
{
    CommonsMultipartResolver mr =  new CommonsMultipartResolver();
    mr.setMaxInMemorySize(102400);
    mr.setMaxUploadSize(102400);
    return mr;
}

Шаблон update_complete.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>dancer <span th:text="${dancer}"></span></p>
</body>
</html>

Результат: dancer Null

  • Я ожидал что-то вроде dancer dancer_info.json или что-то от MultipartFile.toString()

То, что я пробовал раньше:

  • Использование StandardServletMultipartResolver вместо CommonsMultipartResolver: я не смог найти setMaxUploadSize() эквивалент, поэтому я не могу применить это.
  • Использование @RequestBody вместо @RequestParam: тот же результат.
  • Переименование dancer_info в file: тот же результат.

Чего не хватает в моем случае?

  • Редактировать : Из комментария @JB Низета я добавил name="dancer_info" в тег <input>, но результат был таким же.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...