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