Не удается загрузить несколько файлов с помощью InputStream в остальные API - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу загрузить несколько файлов в остальные API, используя Spring. Я могу загрузить один файл, используя приведенный ниже код

    @Path("/line-item/cancel")
    @Produces({"application/xml", "application/json"})
    @Consumes({MediaType.MULTIPART_FORM_DATA})
    @ApiOperation(value = "Api to cancel PO Line Items", response = POLineItemCancellationResponse.class)
    POLineItemCancellationResponse cancelPoLineItems(@Multipart(value = "data") String poLineItemCancellationRequestEntry, @Multipart(value="file") InputStream inputStream);

Но если я пытаюсь ввести @Multipart(value="file") InputStream[] inputStream, я получаю нулевой объект во входном потоке.

Я также пытался использовать MultiPartFile

POLineItemCancellationResponse cancelPoLineItem(@RequestPart(value="file") MultipartFile[] files);

Но я получаю следующую ошибку:

No message body reader has been found for class [Lorg.springframework.web.multipart.MultipartFile;

1 Ответ

0 голосов
/ 07 февраля 2020

Я использовал для своих остальных звонков, чтобы загрузить несколько файлов, как (не пробовал с srping)

@FormDataParam("file") FormDataContentDisposition fileDisposition,
            @FormDataParam("file") List<FormDataBodyPart> bodyParts

И это определение чванства

@ApiImplicitParam(name = "file", value = "One or more files", allowMultiple = true, required = true, dataType = "file", paramType = "form")



for (int i = 0; i < bodyParts.size(); i++) {
            // * Casting FormDataBodyPart to BodyPartEntity, which can give us
            // * InputStream for uploaded file
            BodyPartEntity bodyPartEntity = (BodyPartEntity) bodyParts.get(i)
                    .getEntity();
            fileDisposition = bodyParts.get(i).getFormDataContentDisposition();
            try { 
                  String fileName = URLEncoder.encode(
                FilenameUtils.getName(fileDisposition.getFileName()), "UTF-8");
        String documentFormat = fileName
                .substring(fileName.lastIndexOf(".") + 1);
        InputStream file = bodyPartEntity.getInputStream();
}

Здесь вы получите список входных потоков, которые вы ищете.

...