Недопустимые символы в кодировке URL при использовании @FormParam для загрузки файла - PullRequest
1 голос
/ 06 мая 2020

У меня есть код контроллера ниже

@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? Спасибо.

...