У меня есть код контроллера ниже
@POST
@Path("class/import")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed(Role.TRAINING_ADMIN)
public Response importClass(@FormParam("file") File file) {
LOGGER.info("Received PUT import class: file=" + file.length());
if (checkTokenAndRole(new int[] {1, 11}).getStatus() != Response.Status.OK.getStatusCode()) {
return LoginError(checkToken().getStatus());
} else {
String token = request.getHeader(HttpHeaders.AUTHORIZATION);
String fileExtension = request.getHeader("FileExtension");
return ClassService.getInstance().importClass(file, fileExtension,
token);
}
}
Этот код нормально работает в среде java 6, JPA 2.0, Websphere Application Server 8.5. Но когда я обновил среду, используя java 8, JPA 2.1 и Websphere Application Server 9.0, этот код дал ошибку:
Illegal URL-encoded characters, make sure that no @FormParam and @Multipart annotations are mixed up
Я попытался изменить @FormParam на @Multipart, код запускается, но я не могу загрузить excel файл, потому что Apache Poi не может прочитать закодированный файл (Content-Transfer-Encoding - BASE64 с @Multipart). Итак, кто-нибудь поможет мне дать решение для обычного использования @FormParam? Спасибо.