我对MuleSoft CMIS连接器有一点问题。我有一个从Alfresco上传和下载文件的应用程序。我通过AtomPub连接到Alfresco,并使用CMIS对Alfresco采取所有行动。
问题在于:
我曾经从存储库中获取对象并且工作正常。在我的流程中,我添加了一个组件,它从流中获取对象,类型为DocumentImpl
,获取InputStream
,将其转换为Object并返回它。浏览器开始下载文件,但它不知道文件是什么,因为它没有附加扩展名。
最后问题是:如何将扩展名附加到正在下载的文件中?
编辑添加了一些代码
@覆盖 public Object onCall(MuleEventContext eventContext)抛出异常{
MuleMessage mes = eventContext.getMessage();
System.out.println("Message is :" +mes);
DocumentImpl doc = mes.getPayload(DocumentImpl.class);
HttpResponse res = new HttpResponse();
InputStream a = doc.getContentStream().getStream();
String m = doc.getContentStreamMimeType();
String n = doc.getContentStreamFileName();
res.setBody(mes);
return a;
}
答案 0 :(得分:1)
好的,我解决了这个问题。基本上,最好的方法是将流程更改为:
<set-payload value ="#[payload.getContentStream()]" />
<set-variable value="#[payload.getMimeType()]" variableName="mime" doc:name="Variable" />
<set-variable value="#[payload.getFileName()]" variableName="name" doc:name="Variable" />
<!-- Set Content-Type to stored mimetype -->
<set-property value="#[flowVars['mime']]" propertyName="Content-Type" />
<set-property propertyName="File-Name" value="#[flowVars['name']]"/>
<set-property value="attachment; filename=#[flowVars['name']]" propertyName="Content-Disposition" />
这应该在
之后的Mule Flow中这会从有效负载中获取mime类型和文件名并返回它!