我正在尝试创建一个webservice,当调用它时,它会查看本地目录,从那里提取文件并上传到ftp服务器。
我可以创建一个简单的路由,从本地目录中选择文件并上传到ftp服务器,下面是代码:
<route>
<from uri="file://D:\\FTPTest?noop=true&delay=2000" />
<to uri="ftp://user@host.in:21/public_html/EnterpriseProject?password=password123#"/>
<to uri="bean:myBean?method=test" />
</route>
但是,我想在通过restlet webservice调用特定路由时调用此文件传输,我尝试了以下代码,但没有成功:
<route>
<from uri="direct:fileTransferRoute" />
<to uri="file://D:\\FTPTest?noop=true&delay=2000" />
<to uri="ftp://user@host.in:21/public_html/EnterpriseProject?password=password123#"/>
</route>
restlet从以下路径调用上述路径:
<route>
<from
uri="restlet:http://0.0.0.0:9080/csitec/{serviceName}?restletMethod=post" />
<process ref="serviceRouteProcessor" />
<toD uri="direct:${in.header.nextRoute}" />
</route>
以下是我的serviceRouteProcessor的代码:
public void process(Exchange exchange) throws Exception {
String body = exchange.getIn().getBody(String.class);
String serviceName = exchange.getIn().getHeader(Constants.SERVICE_NAME).toString();
String nextRoute = serviceName+Constants.NEXT_ROUTE_APPENDER;
exchange.getOut().setHeader(Constants.NEXT_ROUTE, nextRoute);
exchange.getOut().setBody(body);
}
请帮助我,并建议需要做的改变,使它这样工作。
编辑:
您必须首先了解一件事,to
是生产者而不是消费者
你能做的是,
@Autowired
private CamelContext context;// if you have more than one camel context use @Qualifier and wire by bean id
public void process(Exchange exchange) throws Exception {
String body = exchange.getIn().getBody(String.class);
String serviceName = exchange.getIn().getHeader(Constants.SERVICE_NAME).toString();
context.startRoute(serviceName+Constants.NEXT_ROUTE_APPENDER);// here in nextroute you must give the routeid
}
你的路线一定像
<route id = "<value of serviceName+Constants.NEXT_ROUTE_APPENDER>" autoStartup = "false">
<from uri="file://D:\\FTPTest..." />
<onCompletion onFailureOnly="true">
<choice>
<when>
<simple>${property.CamelBatchComplete}</simple>
<process ref="asyncSelfShutdownProcessor"/>
</when>
</choice>
</onCompletion>
<to uri="ftp://user@host.in:21..."/>
</route>
并将asyncSelfShutdownProcessor添加到spring上下文
@Component
public class AsyncSelfShutdownProcessor implements AsyncProcessor {
@Autowired
private CamelContext context
public boolean process(Exchange exchange, AsyncCallback callback){
new Thread(() -> context.stopRoute(exchange.getFromRouteId())).start();
}
}
##############################################################################旧版本:
好的,我理解您的需要,因为您有一个将文件从文件系统移动到ftp服务器的路由,您所需要的只是这个路由,只有当您从rest服务触发时才能执行。我会这样做,
*我将使路由autoStartup="false"
并将其分配为id="fs-to-ftp"
到路由
<route id = "fs-to-ftp" autoStartup = "false">
<from uri="file://D:\\FTPTest..." />
<onCompletion onFailureOnly="true">
<process ref="asyncSelfShutdownProcessor"/>
</onCompletion>
<to uri="ftp://user@host.in:21..."/>
</route>
**将onComplete中的自关闭异步进程添加到路由“fs到ftp”。异步处理器
asyncSelfShutdownProcessor= AsyncProcessorConverterHelper.convert(exchange -> {
new Thread(() -> context.stopRoute("fs-to-ftp")).start();
});
***将骆驼上下文依赖添加到rest服务,并在rest服务中通过id启动路由context.startRoute("fs-to-ftp")
您应该尝试Content-enrich的polEnrich功能
在示例部分,您可以找到有关文件的示例。
您的路由应该是这样的(我只使用camel java dsl,所以这是一段xml伪代码):
<route>
<from uri="direct:fileTransferRoute" />
<pollEnrich uri="file://D:\\FTPTest?fileName=data.txt....." />
<to uri="ftp://user@host.in:21/public_html/EnterpriseProject?password=password123#"/>
</route>
新反应: 我有一个 组件,我只想在用户访问特定页面时隐藏该组件。 App.JS: main.js:
我需要将文件从文件夹同步到restendpoint。因此,如果文件被放置在特定文件夹中,我需要将该文件发送到接受多部分文件的RESTendpoint。我正在使用ApacheCamel来实现这一点。 RESTendpoint在Spring中编写,如下所示: 我是Camel的新手,并且已经弄清楚了如何通过构建路由并获取文件来轮询目录,但是我无法弄清楚如何使用此路由将此文件放入其余endpoint。这是
问题内容: 我有一个使用httprouter和negroni的Web服务器。用户通过外部OAuth登录此系统。我们将令牌保存到表明他们是否已登录的加密会话中。我想使用中间件来验证此令牌是否存在,如果不存在,则将用户踢回到登录页面。我想从身份验证中间件中排除一些路由。negroni自述文件中有一个使用大猩猩mux进行此操作的示例,但是我无法完全理解使用httprouter进行此操作的可扩展性。类似于
null 在这种情况下,如果我们需要添加更多的源和目标,我们只需要更改属性文件。正如我所知,我们不能在Apache Camel中使用动态endpoint。 示例:
在Flasgger中,我试图为接受上传文件的路由创建文档。然而,尽管坚持规范,我不能在Flasgger UI中显示文件选择器。 我使用的是最新的(目前为止的),运行OpenAPI3规范(如),我在Swagger-UI中看到了这个提交,它为POST文件请求启用了文件选择器。 我知道以前也有人问过类似的问题,但没有一个与OAS版本3有关。
本文向大家介绍PHP文件上传之多文件上传的实现思路,包括了PHP文件上传之多文件上传的实现思路的使用技巧和注意事项,需要的朋友参考一下 多文件上传的两种情况 ①使用多个name值 a.点击提交之后接收到的数据格式 从这种格式可以看出来,每一个文件对应一个数组单元 所以使用foreach遍历数组,并对每个数组单元进行文件上传函数调用 b.点击提交后的操作 ①接收上传的文件信息 $file = $_F