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

使用MuleSoft CMIS连接器从Alfresco下载文件,alfresco,cmis,Alfresco,Cmis,我对MuleSoft CMIS连接器有点问题。我有一个从Alfresco上传和下载文件的应用程序。我通过AtomPub连接到Alfresco,并使用CMIS对Alfresco进行所有操作 问题是: 我过去常常从存储库中获取对象,它工作得很好。在我的流中,我添加了一个组件,它从流中获取对象,类型为DocumentImpl,获取InputStream,将其强制转换为对象并返回。浏览器开始下载文件,但不知道文件是什么,因为它没有附加扩展名 最后一个问题是:如何将扩展名附加到正在下载的文件 编辑添加的部

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

问题是: 我过去常常从存储库中获取对象,它工作得很好。在我的流中,我添加了一个组件,它从流中获取对象,类型为
DocumentImpl
,获取
InputStream
,将其强制转换为对象并返回。浏览器开始下载文件,但不知道文件是什么,因为它没有附加扩展名

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

编辑添加的部分代码

@凌驾 公共对象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;
}

好的,我解决了这个问题。基本上最好的方法是将流程更改为:

    <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" />

这应该是在骡流之后


这将从负载中获取mime类型和文件名并返回它!

好的,我解决了这个问题。基本上,最好的方法是将流更改为:

    <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" />

这应该是在骡流之后


这将从负载中获取mime类型和文件名并返回它!

在这里大声思考一下……如果您使用
DocumentImpl.getContentStreamMimeType()
获取mime类型,然后使用该值设置浏览器的响应,然后再开始将其流回?即
response.setContentType('your-mime-type'))
是的,我也在想同样的事情,但我就是不能实现它!我一直在想,我似乎找不到解决方案,而且一定有解决方案!你能给我们看一些代码吗?所以我添加了代码。它非常简单,可能遗漏了一件我找不到的小事情!谢谢你的回答!据我所知您必须在响应头中设置contentType,如下所示:
String mimeType=doc.getContentStreamMimeType();String filename=doc.getContentStreamFileName();response.setContentType(mimeType);response.setHeader(“内容处置”,“附件;filename=“+filename”)
无论如何,您没有使用响应,因此这根本没有任何效果。我没有使用Mule,因此我不熟悉这些东西的配置:(在这里大声思考……如果您使用
DocumentImpl.getContentStreamMimeType()获得mime类型)
然后使用该值设置对浏览器的响应,然后再开始流式返回?即
response.setContentType('your-mime-type'))
是的,我也在想同样的事情,但我就是不能实现它!我一直在想,我似乎找不到解决方案,而且一定有解决方案!你能给我们看一些代码吗?所以我添加了代码。它非常简单,可能遗漏了一件我找不到的小事情!谢谢你的回答!据我所知您必须在响应头中设置contentType,如下所示:
String mimeType=doc.getContentStreamMimeType();String filename=doc.getContentStreamFileName();response.setContentType(mimeType);response.setHeader(“内容处置”,“附件;filename=“+filename”)
无论如何,您没有使用响应,因此这将完全无效。我没有使用Mule,因此我不熟悉这些东西的配置:(