Загрузка файла из браузера на клиент Джерси (сервер) на сервер Джерси - PullRequest
0 голосов
/ 08 ноября 2018

Фон

У меня есть две услуги. Сервис A подвергается воздействию внешнего мира, а Сервис B вызывается Сервисом A . Все эти сервисы являются сервисами dropwizard. Функция, которую я пытаюсь реализовать, заключается в загрузке файла из внешнего интерфейса, который загружается в Сервис A , который обрабатывает аутентификацию. Тот же самый запрос должен быть передан Сервис B . Служба B должна получить файл и сохранить его на диск после сжатия и создания эскиза.

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

Задача

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу передать файл в форме данных из Служба A в Служба B .

Вот код в Сервисе A , который отправляет данные формы в Сервис B .

@POST
@Timed
@Consumes(MediaType.MULTIPART_FORM_DATA)
fun create(
        @Auth user: AuthUser,
        @FormDataParam("file") file: InputStream,
        @FormDataParam("file") fileDetail: FormDataContentDisposition,
        @FormDataParam("file") body: FormDataBodyPart,
        @PathParam("res_id") articleId: String): Response {
    val multiPart = FormDataMultiPart()
    multiPart.bodyPart(body)
    val target = this.client.target("http://localhost:8082/file/create?res_id=1")
    val response = target.request().post(Entity.entity(multiPart, multiPart.mediaType), Response::class.java)
    Response.status(response.status).entity(response.entity).build()
}

Вот код в Службе B , который его получает.

@POST
@Path("/create")
@Consumes(MediaType.MULTIPART_FORM_DATA)
fun create(
        @FormDataParam("file") file: InputStream,
        @FormDataParam("file") fileDetail: FormDataContentDisposition,
        @QueryParam("res_id") resId: String): Response {
    resourceLogger.info("Res id in media create $resId")
    upload_file(file, fileDetail)
    return Response.status(201).entity(mapOf("success" to true)).build()
}

Запрос достигает Служба A и отправляется на Служба B . Но Служба B отвечает 400. Нет журналов или трассировки стека. Не могу понять, что происходит не так. Любая помощь будет оценена.

...