Прежде чем начать свой вопрос, английский не точен, потому что я кореец.
Я использую Spring Boot 1.5.14.
Я выполняю загрузку файлов с использованием FormData, и произошла ошибка 400.
1.Javascript
var formData = new FormData();
formData.append('autoSelect', 'autoSelect');
formData.append('file', fileObj);
$.ajax({
url: '/api/portfolios/' + pofolNo + '/main-image',
type: 'PUT',
enctype: 'multipart/form-data',
processData: false,
contentType: false,
data: formData,
async: false,
});
2.Spring Controller (не работает)
@PutMapping("{pofolNo}/main-image")
public CommonApiResponse changePortfolioMainImage(
@PathVariable("pofolNo") Integer pofolNo,
@RequestParam("autoSelect") String autoSelect,
@RequestParam("mainImage") MultipartFile mainImage) {
log.debug("check : {} / {} / {}", pofolNo, autoSelect, mainImage);
return ok(null);
}
Приведенный выше код приводит к ошибке 400, говорящей, что параметр autoSelect отсутствует.
Поэтому я проверяю HttpServletRequest.getParameter("autoSelect")
следующим образом.
3.Пружинный контроллер (работает)
@PutMapping("{pofolNo}/main-image")
public CommonApiResponse changePortfolioMainImage(
@PathVariable("pofolNo") Integer pofolNo,
HttpServletRequest request,
@RequestParam("mainImage") MultipartFile mainImage) {
log.debug("check : {} / {} / {}", pofolNo, request.getParameter("autoSelect"), mainImage);
return ok(null);
}
Приведенный выше код успешно выполнен.
В чем разница?Я не могу понять, @RequestParam
не работает, но работает с HttpServletRequest
.