gpt4 book ai didi

java - 发送文件到vertx eventbus

转载 作者:行者123 更新时间:2023-12-02 13:09:04 25 4
gpt4 key购买 nike

我正在尝试使用 Vertx 上传文件,该请求是包含 PDF 的 POST 请求,我的处理程序如下所示(我从 github 中的示例中获取了代码):

...
Set<FileUpload> fileUploadSet = routingContext.fileUploads();
Iterator<FileUpload> fileUploadIterator = fileUploadSet.iterator();
while (fileUploadIterator.hasNext()) {
FileUpload fileUpload = fileUploadIterator.next();

// Use the Event Bus to dispatch the file now
// Since Event Bus does not support POJOs by default so we need to create a MessageCodec implementation
// and provide methods for encode and decode the bytes
...

vertx.eventBus().<"what to use here?">send(Address.UPLOAD_FILE, "", result -> {
if (result.succeeded()) {
req.response()
.setStatusCode(200)
.write(result.result().body())
.end();
} else {
logger.info(result.cause().toString());
req.response()
.setStatusCode(500)
.write(result.cause().toString())
.end();
}
});

根据上面的评论,我不能只是尝试这样的事情(它实际上显示了一个错误):

vertx.eventBus().<FileUpload>send(Address.UPLOAD_FILE, "", result -> {

我一直在检查 MessageCodec,但我不清楚如何将其应用于这种情况。

注意:在这种情况下必须使用事件总线。

最佳答案

当您使用 http post 将文件上传到 vertx 时,该文件将存储在文件系统中。

您必须在 bodyhandler 中设置上传目录:http://vertx.io/docs/apidocs/io/vertx/ext/web/handler/BodyHandler.html#setUploadsDirectory-java.lang.String-

FileUpload 对象仅保存文件上传的元信息,而不保存内容本身。

如果你想通过事件总线发送文件,你必须先从文件系统读取它:http://vertx.io/docs/apidocs/io/vertx/core/file/FileSystem.html#readFile-java.lang.String-io.vertx.core.Handler-

关于java - 发送文件到vertx eventbus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44033272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com