当前位置: 首页 > 知识库问答 >
问题:

阿帕奇骆驼多部分问题

柳轶
2023-03-14

我正在尝试通过angle 4上传一个带有pdf文件的表单

该请求是一个多部分/表单数据请求

我正在使用springboot、apachecamelservlet,我的路径是

 rest("/notice").description("Upload Multiple Report via camel and netty")
                        .post().route().unmarshal().mimeMultipart()
                        .to("direct:uploadReportProcessor");

在我的处理器中

Map<String, DataHandler> attachments = exchange.getIn().getAttachments();

然后我正在尝试写入如下文件:

    byte[] bytes = StreamUtils.copyToByteArray(dh.getInputStream());

Path path = Paths.get("C:\\temp\\" + dh.getName());
Files.write(path, bytes);

无论我怎么尝试,文件总是被破坏。无法在Acrobat reader中打开。

共有1个答案

祁英哲
2023-03-14

这可能是编码问题。

Map<String, DataHandler> attachments = exchange.getIn().getAttachments();

String charsetPartStr = attachments.get("content").getContentType();
Files.write(path, bytes, StandardOpenOption.APPEND,  Charset.forName(charsetPartStr));

保持部件的介质类型,并在编写文件时使用它。

 类似资料:
  • 我试图使用Apache Camel Quartz2实现一个调度器,它每分钟执行一次路由,并按预期执行一些任务。我使用spring DSL实现与apache camel相关联的路由,如下所示: 根据日志,它不会记录为路由记录的消息,例如Direct:DomainsWithFTPUsers等等。请指导如何实现同样的目标。

  • 遵循官方文件(https://camel.apache.org/manual/component-dsl.html#_using_component_dsl)我创建了以下代码: 但是中的告诉我: 并且中的特性不建议导入相应的库。 有人能给我指出正确的方向吗? 我必须理解的概念才能做到这一点吗?

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • 考虑到apache Camel,我有一个问题:是否可以通过代码来创建全局拦截器,例如AOP?拦截器应该跳过endpoint还是模仿endpoint? 提前致谢

  • 我已经和ApacheCamel合作了一段时间,做了一些基本的工作,但现在我正在尝试创建一个路由,在该路由中,我可以让多个“消费者”访问同一条路由,或者在路由中添加一个消费者,然后处理消息。 我的想法是拥有一个由事件触发的事件驱动消费者,然后例如从ftp读取文件。我正计划做这样的事情: 所以这个想法是我有一个事件(例如直接或来自消息队列),它具有“fileName”属性,然后使用该属性从ftp下载/

  • 我对骆驼生产商有很好的了解,但我不能对各种骆驼消费者保持清醒的头脑。特别是事件驱动消费者和轮询消费者,camel如何知道为这些消费者调用回调? 消费者的一般流量是多少?