如何将上传的AEM表单文件(pdf,xls)存储在AEM CRX存储库之外?

时间:2016-08-02 23:29:58

标签: aem

我在Adobe Forms中使用了guidefileupload现成的组件,但遗憾的是,由于某些业务需求,该组件将无法运行:

  • 所有上传的文件必须存储在默认的AEM CRX存储库之外。我想在我的服务器上设置一个新的文件共享,并将仅在guidefileupload组件中使用的所有文件上传到该位置(DAM将不起作用,因为它是CRX / AEM的一部分)。
  • 我需要将所有上传的文件都进行Base 64编码。

有没有人对使用什么组件或如何解决这个问题有任何好的建议?

2 个答案:

答案 0 :(得分:1)

根据您的架构,有多种方法可以实现它 -

  • 如果您想在AEM中执行此操作并将内容存储在CRX之外,您可以编写连接到数据库或扩展存储数据的 社区功能 在中分离Mongo数据库实例。请参阅Adobe的文档here。基本上没有任何OOTB盒子可以使用,你可以做的就是适应这个概念并拥有自己的东西也是如此。
  • 另一种方法是运行一个单独的容器,该容器托管一个servlet以接受POST内容(您的文件/资产)并将其保存到DB。要使用此方法,您可以参考RequestDispatcher for remote server?

对于Base64编码,您可以在其他容器上执行此操作,请参阅Apache Commons Codec,如果在AEM中实施,则可以使用org.apache.jackrabbit.util.Base64

答案 1 :(得分:0)

这个问题已经很老了,但是我想我会提出建议。如前所述,有几种方法可以解决这个问题,但是到目前为止,最简单的方法之一就是创建一个提交servlet并配置您的自适应表单来提交到REST端点,它实际上就是您的servlet:Adobe-Consulting-Services/acs-aem-samples - SampleAllMethodsServlet.java

通过在servlet中处理多部分参数,您将能够处理上载的文件附件,并将其存储在您想要的任何位置:Handling File Upload in Adobe CQ

(可选)还可以配置数据库连接器之类的东西来存储这些附件:Injecting a DataSourcePool Service into an Adobe Experience Manager OSGi bundle