如何从 HTML 页面使用 apache 骆驼休息端点上传 txt 文件
Posted
技术标签:
【中文标题】如何从 HTML 页面使用 apache 骆驼休息端点上传 txt 文件【英文标题】:How to Upload txt file using apache camel rest end point from HTML page 【发布时间】:2021-12-01 02:04:33 【问题描述】:我是 apache 骆驼的新手。我正在尝试从 html 页面上传 txt 文件,但没有在接收端以正确的形式获取文件。我在交换正文中获得了以下提到的数据,获取了网络表单边界以及文件的内容。
------WebKitFormBoundaryOAiLMJtrA2g4CB32
Content-Disposition: form-data; name="test.txt"
Hello how are you..?
------WebKitFormBoundaryOAiLMJtrA2g4CB32
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
------WebKitFormBoundaryOAiLMJtrA2g4CB32--
我正在使用 apache camel 的休息端点。
HTML 页面:
<form method="post" action="uploadFile" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
Apache 休息端点:
rest("/uploadFile").post("/")
.param("file").endParam()
.to("bean:BeanName?method=converterMethod(Exchange)");
如何从中提取文件内容?
我只需要提取像 -> Hello how are you..?
【问题讨论】:
【参考方案1】:这里有一个关于如何从 apache camel 读取 multipart/formdata 的示例。它从 http 读取并作为 newfile.txt 保存到文件系统
rest("send")
.post("data")
.consumes("multipart/form-data")
.to("direct:c");
from("direct:c")
.setHeader("CamelFileName", constant("newfile.txt"))
.process(e ->
Map<String, DataHandler> attachments = e.getIn(AttachmentMessage.class).getAttachments();
byte[] bytes = attachments.get("hello1.txt").getInputStream().readAllBytes();
e.getIn().setBody(bytes);
).to("file:mydirect")
.setBody(constant("Successfull Job"));
卷曲请求是
curl --location --request POST 'localhost:8080/send/data' \--form 'hellworld=@"/Users/erayerdem/Desktop/hello1.txt"'
应用程序响应
Successfull Job
创建的文件位置
javaAppDirector/mydirect/newfile.txt
【讨论】:
什么是 'AttachmentMessage.class' 属于哪个库?我收到这个类的错误。 txt 文件可以是任何 txt 文件。在处理上面的代码时,我在进程中得到了“null”。 Camel Core 包括 AttachmentMessage 类和结帐附件地图大小。我在我的电脑上试过这段代码。它工作正常 'AttachmentMessage' 是一个接口,所以我使用 Message 类,但附件映射大小为 0。我正在通过 HTML 页面上传。 还有没有其他配置?以上是关于如何从 HTML 页面使用 apache 骆驼休息端点上传 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章