我想做的就是获取文件名以及扩展名。客户端可以使用任何类型的文件(如(文本,图像,doc等)将其发布到其余的api。
我已经尝试了好几天了,但是不幸的是还没有任何运气。
有人可以帮助我摆脱困境吗?
我试图从属性上下文中获取信息,但一无所获
ESB代码:
<api context="/esb" name="OCR" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST" uri-template="/upload">
<inSequence>
<property name="messageType" scope="axis2" type="STRING" value="multipart/form-data"/>
<property name="ContentType" value="multipart/form-data" scope="axis2"/>
<property expression="$body//file" name="fileVar" scope="default" type="STRING"/>
<log level="custom">
<property name="CONTENT_DISPOSITION_1" expression="get-property('CONTENT_DISPOSITION')"/>
<property name="CONTENT_DISPOSITION_2" expression="get-property('TRANSPORT_HEADERS')"/>
</log>
<class name="com.example.GetContentDisposition"/>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
输出:
CONTENT_DISPOSITION_1 =空,而CONTENT_DISPOSITION_2 =空
我已经尝试过使用自定义中介程序
自定义调解人代码:
public boolean mediate(MessageContext context) {
//Accessing Transport Headers
System.out.println("------Transport Headers-------");
Map<String,Object> mapTransportProperties = (Map<String, Object>) ((Axis2MessageContext)context).getAxis2MessageContext().getProperty("TRANSPORT_HEADERS");
for (Map.Entry entry : mapTransportProperties.entrySet()) {
System.out.println("TRANS:" +entry.getKey() + ", " + entry.getValue());
}
return true;
}
输出:
-运输标题-------
TRANS:Accept,/TRANS:Accept-Encoding,gzip,deflateTRANS:缓存控制,无缓存TRANS:连接,保持活动状态TRANS:Content-Length,233TRANS:内容类型,多部分/表单数据TRANS:主机,本地主机:8280TRANS:Postman-Token,e1261dad-947b-4ece-921b-bbe81d232eb6TRANS:User-Agent,PostmanRuntime / 7.17.1
标题中没有内容处置
在POSTMAN结果中,我可以看到内容配置。
您可以启用线路日志来检查标题是否传递到ESB服务器