我正在尝试使用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,但我不清楚如何将其应用于这种情况。
注意:此escenario必须使用eventbus。
您可以使用缓冲区来实现这一点
在路由中,您迭代文件,读取临时文件并将其作为缓冲区发送:
for (FileUpload fileUpload : routingContext.fileUploads()) {
vertx.fileSystem().readFile(fileUpload.uploadedFileName(), (f) -> {
if (f.succeeded()) {
vertx.eventBus().send(Address.UPLOAD_FILE, f.result());
// Also handle response here
}
});
}
然后接收垂直线可能如下所示:
private static class ReceiverVerticle extends AbstractVerticle {
@Override
public void start() {
vertx.eventBus().consumer(Address.UPLOAD_FILE, new Handler<Message<Buffer>>() {
@Override
public void handle(Message<Buffer> event) {
System.out.println(event.body().toString());
event.reply("OK");
}
});
}
}
当您使用超文本传输协议post将文件上传到vertx时,该文件将存储在文件系统中。
您必须在bodyhandler中设置上载目录:http://vertx.io/docs/apidocs/io/vertx/ext/web/handler/BodyHandler.html#setUploadsDirectory-java。串-
FileUpload对象只保存FileUpload的元信息,而不保存内容本身。
如果要通过eventbus发送文件,必须首先从文件系统中读取:http://vertx.io/docs/apidocs/io/vertx/core/file/FileSystem.html#readFile-java。lang.String-io。vertx。果心处理程序-
我将pdf文档存储在服务器端的文件系统中。 我需要让用户下载其中一个,当他/她点击下载。 问题是我知道如何将文件从NodeJS发送到浏览器,但这里的请求将由ReactJS axios请求发出。因此,当我发送文件时,响应将转到react。如何将该pdf文件发送给用户?我是否使用前端代码直接访问文件系统? 在NodeJS中执行之后,当我记录响应时,我在浏览器控制台中获得以下信息 我如何处理这个问题,以
问题内容: 您好,我一直在尝试将文件从node.js发送到客户端。 我的代码有效,但是当客户端转到指定的url()时,它将流式传输文件。 从Google Chrome浏览器访问该文件可使文件(.mp3)在播放器中播放。 我的目标是让客户的浏览器下载文件,然后问客户他想在哪里存储文件,而不是在网站上流式传输。 问题答案: 您需要设置一些标题标志。 用下载代替流媒体;
问题内容: 我想知道如何将zip文件发送到WebApi控制器,反之亦然。问题是我的WebApi使用json传输数据。一个zip文件不可序列化,或者是流。字符串将可序列化。但是除了将zip转换为字符串并发送字符串之外,还必须有其他解决方案。这听起来是错误的。 任何想法如何做到这一点? 问题答案: 如果您的API方法期望使用,则可以从中提取流: 当使用张贴HTTP表单时,这对我有用。
问题内容: 我使用此功能将html文件发送到客户端,但是在客户端中我什么也没有得到(空白页),没有错误。我有什么问题吗?,请帮忙? 我的test.html文件 问题答案: 尝试这样的代码: 使用res.sendFile而不是手动读取文件,以便express可以为您正确设置内容类型。 您不需要这行,因为这是由express内部处理的。
我需要将大型csv文件从node发送到Python。这段代码适用于小文件,但不适用于大文件。我也试过产卵过程。我不明白问题出在哪里。如果有人知道正确的代码,请分享 代码: 错误
问题内容: 我不知道在Flash或Actionscript中进行编程。实际上,我是一名Java EE开发人员。 在Flash文件中,我有以下方法: 此方法会将录制的声音保存到我们将指定的文件夹中的“ recording.wav”中。 我想要做的是通过将录制的声音发送到Java Servlet来更改保存到磁盘的内容。 我找到了这段代码,但是我不知道如何在HTTP请求中发送的params中插入reco