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