文件从浏览器上载到Jersey服务器(客户端)上载到Jersey服务器

时间:2018-11-08 06:22:56

标签: kotlin multipartform-data jersey-2.0 dropwizard jersey-client

背景

我有两项服务。 服务A 暴露于外界,服务B 服务A 调用。所有这些服务都是Dropwizard服务。我要实现的功能是从前端上传文件,该文件上传到处理auth的 Service A 。应该将相同的请求转移到服务B 服务B 应该获取文件,并在压缩和创建缩略图后将其保存到磁盘。

我已经使用邮递员分别测试了这两种服务,它们能够接收InputStream文件和内容处置。

问题

我面临的问题是当我要将formData中的文件从服务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。没有日志或堆栈跟踪。无法找出问题所在。任何帮助将不胜感激。

0 个答案:

没有答案