使用MuleSoft CMIS连接器从Alfresco下载文件

时间:2013-01-30 19:10:53

标签: alfresco cmis

我对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;
}

1 个答案:

答案 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类型和文件名并返回它!