1

我想在 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 编码一次。
但我不是 100% 确定。

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

4

3 回答 3

4

?path=您可能会发现使用 legacy参数创建文档库文件夹 URL更容易。

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

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()在路径上使用并将其附加到基本文档库 URL?path=

您可以在documentlibrary.inc.ftl中查看路径参数是如何解释的

于 2015-06-04T22:12:30.157 回答
2

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

真的应该有一个帮助类,但也许我错过了一些东西。

于 2015-05-08T15:55:26.000 回答
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";
}

任何更正或更好的答案将不胜感激!

于 2013-06-21T07:39:01.673 回答