Джерси @FormDataParam для чтения нескольких файлов InputStream - PullRequest
2 голосов
/ 05 июня 2019

Я могу использовать приведенный ниже код для загрузки одной фотографии, но я хочу загрузить несколько фотографий с помощью @FormDataParam

@POST
@Path("data/uploadPhoto")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadPhoto(@FormDataParam("data") InputStream photo) {

Я пытался использовать @FormDataParam("file") List<InputStream> photos

но это не сработало, какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вы можете загружать несколько файлов с помощью класса FormDataBodyPart, который позволяет получать данные формы и получать из нее несколько изображений в виде InputStream.

Я разместил образец ниже,

 @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void uploadMultiple(@FormDataParam("file") FormDataBodyPart body){
        for(BodyPart part : body.getParent().getBodyParts()){
            InputStream is = part.getEntityAs(InputStream.class);
            ContentDisposition meta = part.getContentDisposition();
            doUpload(is, meta);
        }
    }

Вы можете задать вопрос о дубликате Выбор нескольких файлов и загрузка их с помощью Jersey

0 голосов
/ 05 июня 2019

Поскольку каждая часть запроса должна иметь уникальное имя, вы не можете использовать одно и то же имя file для каждого изображения. В запросе должны использоваться разные имена.

Из этого следует, что ваш метод должен иметь один @FormDataParam для каждого файла в запросе. Все они должны иметь разные имена.

public Response uploadPhoto(@FormDataParam("data1") InputStream photo1,
  @FormDataParam("data2") InputStream photo2,
  @FormDataParam("data3") InputStream photo3) {
...