alfresco - 获取上传文件的noderef

时间:2012-04-05 13:22:00

标签: java alfresco

我正在尝试将文件的节点引用上传到我的java类中的默认根目录。

我尝试了this链接。

但它返回空结果集。如何编写搜索查询以获取特定文件节点。或者有没有办法在java类中使用sting创建节点ref。

我的代码:

NodeRef companyHomeNodeRef = null;
            StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE,
                    "SpacesStore");

            ResultSet rs = searchService.query(storeRef,
                    SearchService.LANGUAGE_LUCENE, "\\\"/app:company_home/app:user_homes/sys:boris/cm:mypics\\");

            try {
                System.out.println("length :" + rs.length());
                if (rs.length() == 0) {
                    // throw new Exception("Didn't find Company Home");
                } else {
                    companyHomeNodeRef = rs.getNodeRef(0);
                }
            } finally {
                rs.close();
            }

感谢

2 个答案:

答案 0 :(得分:2)

您的Lucene搜索语法不正确。如果你想要上传图片的文件夹,你可以使用: 路径: “/应用:company_home /应用:user_homes /厘米:鲍里斯/厘米:mypics”

如果您希望对象位于该文件夹中,您可以使用: 路径: “/应用:company_home /应用:user_homes /厘米:鲍里斯/厘米:mypics / *”

如果你想要该文件夹中的特定对象,你可以使用: 路径: “/应用:company_home /应用:user_homes /厘米:鲍里斯/厘米:mypics /厘米:test.png”

用于测试查询的好工具是节点浏览器,可在Alfresco Explorer和Alfresco Share中使用。请务必选择“Lucene”作为搜索语法,然后尝试查询。一旦他们返回您正在寻找的对象,将其插入您的Java代码。

答案 1 :(得分:0)

我已经解决了这个问题。下面是从节点引用字符串创建文件的节点引用并更新文件内容的代码。

           AuthenticationUtil.runAs(new RunAsWork<String>() {

                @Override
                public String doWork() throws Exception {

                    NodeRef nodeRef = new NodeRef("workspace://SpacesStore/f1a5e908-80cb-4c6e-b919-cc80fe53b835");
                    if(contentService != null) {
                        ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
                        if(writer != null) {
                            writer.putContent(new ByteArrayInputStream("updated content".getBytes()));
                        } 
                    } 
                    return null;
                }

            }, AuthenticationUtil.getSystemUserName());