【发布时间】:2022-02-07 16:27:43
【问题描述】:
我尝试基于 Quarkus REST Score Console 优化音频文件的反应式端点流输入。我用 Reactive RestResponse 替换了通用 Response。它将分数提高到 100,但它现在使用的是 ServerStringMessageBodyHandler 而不是 ServerInputStreamMessageBodyHandler。有没有办法告诉 Quarkus 使用什么 MessageBodyHandler ?现在它在 inputStream 对象上调用 .toString() 方法。我试图直接返回ByteArray,但问题是一样的。知道这里出了什么问题吗?
@GET
@Path("/{lectureId}/stream")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
fun getLectureStreamById(
@RestHeader("Range") rangeParam: String?,
@RestPath lectureId: LectureId
): Uni<RestResponse<InputStream>> {
return lectureAudioService.getAudioFile(lectureId).map { lectureStream ->
downloadResponse(ByteArrayInputStream(lectureStream.data), filename = "$lectureId.mp3").build()
}
}
fun downloadResponse(
data: InputStream,
filename: String,
): ResponseBuilder<InputStream> {
return ResponseBuilder.ok(data)
.header("Content-Disposition", "attachment;filename=$filename")
}
【问题讨论】:
标签: response inputstream resteasy quarkus reactive