如何通过multipart / form-data文件上传文件到camel-jetty 2.17.0?

时间:2016-04-15 20:33:06

标签: java file-upload jetty apache-camel jquery-file-upload

我正在使用一个将文件上传到camel-jetty服务器的网络软件。上传通过浏览器通过BlueImp jQuery FileUpload(https://github.com/blueimp/jQuery-File-Upload)进行。我工作的公司最近在我们的服务器端Java项目中从Camel 2.3升级到Camel 2.17。我们之前从未遇到过问题,但自从我们升级到新版本后,文件上传不再有效。深入研究我发现了一些奇怪的事情:

  • exchange.getIn()。getAttachments()。size()== 0 (总是)
  • NullPointerException 始终在camel-jetty中的 MultiPartFilter 中抛出,因为它会尝试始终获取每个表单数据的内容类型part ...即使我默认测试的每个浏览器/代理都不会在每个部分都设置内容类型。

我修改了其他帖子中直接使用 FormData Blob 的建议,在jetty MultiPartFilter 中修复了 NullPointerException 在javascript中强制每个表单数据部分(Composing multipart/form-data with a different Content-Type on each parts with Javascript (or Angular))上的内容类型。但是, exchange.getIn()。getBody()现在始终为null,而 exchange.getIn()。getAttachments()仍然是一个空列表。

仔细观察后,我注意到从jQuery FileUpload发送AS FILE的标题上的二进制数据。 exchange.getIn()。getHeader(" files []")是二进制数据流,但数据似乎被破坏...我假设因为它正在被转换在标题上设置UTF8编码(或反之亦然)。

所以我的问题是一个人如何通过camel-jetty上传文件?我找不到一个在camel-jetty 2.17.0的现实世界中使用的例子。所有示例都用于Camel-Jetty 2.3。

我做错了什么?有人可以使用camel-jetty 2.17发布文件上传处理器的工作示例吗?

0 个答案:

没有答案