如何写一个Alfresco Share文件夹的链接? (在网站内)

时间:2013-06-21 07:39:02

标签: alfresco alfresco-share

我想在Alfresco Share中创建指向特定文件夹的HTTP链接。

Alfresco Share以相当复杂的方式对路径进行编码:

thesite
http://server/share/page/site/thesite/documentlibrary

thesite/documentLibrary/somefolder/anotherfolder
http://server/share/page/site/thesite/documentlibrary#filter=path|%2Fsomefolder%2Fanotherfolder

thesite/documentLibrary/éß和ệ
http://server/share/page/site/s1/documentlibrary#filter=path|%2F%25E9%25DF%25u548C%25u1EC7

thesite/documentLibrary/a#bc/éß和ệ
http://server/share/page/site/thesite/documentlibrary#filter=path%7C%2Fa%2523bc%2F%25E9%25DF%25u548C%25u1EC7%7C

我怀疑它是一个双重URLencode,但斜杠除外,只有URL编码一次。
但我不是百分百肯定。

是否有进行此编码的C#库?

3 个答案:

答案 0 :(得分:4)

您可能会发现使用旧版?path=参数更轻松地创建文档库文件夹URL。

使用示例路径/Sample Content/∞⊕⊗¤☺☹★☆★☆★而不是构建表单的网址

http://alfresco.example/share/page/site/mike/documentlibrary#filter=path%7C%2FSample%2520Content%2F%25u221E%25u2295%25u2297%25A4%25u263A%25u2639%25u2605%25u2606%25u2605%25u2606%25u2605%7C&page=1

你可以生成一个看起来像

https://alfresco.example/share/page/site/mike/documentlibrary?path=/Sample%20Content/%E2%88%9E%E2%8A%95%E2%8A%97%C2%A4%E2%98%BA%E2%98%B9%E2%98%85%E2%98%86%E2%98%85%E2%98%86%E2%98%85

因此,使用C#,您将在路径上使用Uri.EscapeUriString(),并使用?path=

将其附加到基本文档库网址

您可以在documentlibrary.inc.ftl

中查看路径参数的解释方式

答案 1 :(得分:2)

检查org.alfresco.repo.web.scripts.site.SiteShareViewUrlGet是否有实施。它不是很优雅,但看起来很完整,可能是你自己班级的一个很好的起点。

确实应该有一个助手类,但也许我错过了一些东西。

答案 2 :(得分:0)

我找不到一个库,所以我写了下面的代码:

if (path.Contains("documentLibrary"))
{
    int firstSlashPosition = path.IndexOf("/");
    string siteName = path.Substring(0, firstSlashPosition);
    string pathWithinSite = path.Substring(firstSlashPosition + "/documentLibrary".Length);
    string escapedPathWithinSite = HttpUtility.UrlEncode(pathWithinSite);
    string reescapedPathWithinSite = HttpUtility.UrlEncode(escapedPathWithinSite);
    string sharePath = reescapedPathWithinSite.Replace("%252f", "%2F");
    return "http://server/share/page/site/" + siteName + "/documentlibrary#filter=path|" + sharePath;
}
else
{
    // Site name only.
    return "http://server/share/page/site/" + path + "/documentlibrary";
}

非常感谢任何更正或更好的答案!