1

MuleSoft CMIS 连接器有一点问题。我有一个从 Alfresco 上传和下载文件的应用程序。我通过 AtomPub 连接到 Alfresco,并使用 CMIS 对 Alfresco 执行所有操作。

问题是这样的:我曾经从存储库中获取对象并且工作正常。在我的流程中,我添加了一个组件,该组件从流程中获取对象,它的类型为DocumentImplget InputStream,将其转换为 Object 并返回它。浏览器开始下载文件,但它不知道文件是什么,因为它没有附加扩展名。

最后是一个问题:如何将扩展名附加到正在下载的文件中?

编辑添加的一些代码

@Override 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;
}
4

1 回答 1

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

于 2013-02-01T15:26:27.800 回答