0

我正在尝试使用 quarkus 的反应式 REST 端点与反应式邮件程序相结合,以创建一个小型应用程序,该应用程序基本上接收图像并通过电子邮件发送该图像。但是,由于某种原因,如果我包含附件,或者尝试从反应流中读取,则会失败。

到目前为止,我的代码如下(相关部分)。两个被注释掉的部分是一个测试,以检查我是否可以读取整个请求流。这似乎也失败了(无限期地接受)。发送没有附件的邮件就可以了。我尝试在文档中搜索有关如何执行此操作的任何信息,但大多数文档都是关于返回响应式响应,而不是以响应式方式读取请求。(顺便说一句,第一次尝试响应式 API,如果我做错了,请多多包涵 :))

val request = HttpServerRequest(re.request())

    val attachment = request.toMulti().map {
        it.bytes
    }.flatMap {
        Multi.createFrom().iterable(it.asIterable())
    }
// val temp = request.toMulti().subscribe().asStream().collect(Collectors.toList())
// val byteArray = attachment.subscribe().asStream().collect(Collectors.toList()).toByteArray()

    val mail = Mail
        .withHtml(recipient(), SUBJECT, messageBody())
        .addReplyTo(sendingUser())
        .addAttachment("receipt", attachment, contentType)

    return mailer.send(mail).map { "" }
4

1 回答 1

0

使用 RESTEasy Reactive,使用以下方法:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public void post(@MultipartForm FormData data) throws IOException {
    var mail = new Mail().addTo("clement@acme.org").addAttachment("picture", data.image.uploadedFile().toFile(), "application/png");
    mailer.send(mail);
}


public static class FormData {

    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    public String description;

    @RestForm("image")
    public FileUpload image;
}
于 2021-12-15T13:44:27.730 回答