Apache camel 如何使用apachecamel restlet组件处理文件上传?

Apache camel 如何使用apachecamel restlet组件处理文件上传?,apache-camel,Apache Camel,我有一个前端web应用程序,可以通过一个简单的表单上传文件和其他数据: <form action="/document/invoice/entity/777" enctype="multipart/form-data"> <input name="file" type="file"> <input name="userId"> <button>Upload File</button> <

我有一个前端web应用程序,可以通过一个简单的表单上传文件和其他数据:

   <form action="/document/invoice/entity/777" enctype="multipart/form-data">
     <input name="file" type="file">
     <input name="userId">
     <button>Upload File</button>
    </form>

如何将文件和其他数据上载到apache camel rest端点?

看起来您在如何将数据传递到camel的restlet组件方面存在一些配置问题。我建议您阅读camel站点上的restlet文档:如果您仍然有问题,这里有一个链接,指向使用camel实现restlet服务器的完整项目:


如果您在签出这些资源后仍然存在问题,请澄清该异常是来自客户端还是服务器端。

您正在尝试上载一些数据或文件,但根据错误,它需要JSON数据“com.google.gson.JsonSyntaxException”,而它得到的是其他数据。您确定后端部分已根据您发送的内容正确配置吗?

我已经阅读了几次文档,但没有机会上载文件。我创建CRUD端点没有问题,但上传文件和其他数据对我来说很困难。谢谢。重点是如何正确配置rest端点以处理来自该类型帖子的上传?谢谢。由于您遇到JSON错误,您需要查看您的代码,因为您有products=“application/JSON”。那么,您真的在生成JSON作为响应吗?
<restContext id="myApi" xmlns="http://camel.apache.org/schema/spring">

    <rest path="/document">
        <post uri="/{documentType}/entity/{entityId}" outType="documentService.Result"
             consumes="multipart/form-data" produces="application/json">
            <route>
                <to uri="bean:documentService?method=validate(${body.file}, ${body.userId}, ${header.documentType}, ${header.entityId})"/>
            </route>
        </post>
    </rest>

</restContext>
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    at com.google.gson.Gson.fromJson(Gson.java:822)
    at com.google.gson.Gson.fromJson(Gson.java:748)
    at org.apache.camel.component.gson.GsonDataFormat.unmarshal(GsonDataFormat.java:105)
    at org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:67)
    at org.apache.camel.processor.binding.RestBindingProcessor.process(RestBindingProcessor.java:175)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
    at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87)
    at org.apache.camel.component.http.CamelServlet.service(CamelServlet.java:144)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:387)
    at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:183)
    at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
    at com.google.gson.Gson.fromJson(Gson.java:810)
    ... 36 more