Как создать папку с символом% в SharePoint 2019, используя остальные вызовы через почтальона? - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу создать папку с символом% в SharePoint 2019, и я использую следующий вызов:

POST http://<site>/_api/web/folders

{
  "__metadata": {
    "type": "SP.Folder"
  },
  "ServerRelativeUrl": "/SP 2019/Folder%"
}

Но это создает папку% 25 вместо папки%.

Если я поменяю символ в JSON на #, он создаст папку с символом «#».

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Это делает работу.

POST http://<site>/_api/web/folders/AddUsingPath(decodedurl='Path')

Это создаст папку с символом%. Он был введен для SP Online, но также работает с SP 2019.

Проблема, с которой я сталкиваюсь, заключается в том, что API возвращает 400 Bad Request в двух случаях: a) Папка уже существует. б) URL имеет неправильный формат.

Мне нужно различать guish между двумя.

Вы можете взглянуть на эту страницу Microsoft для получения дополнительной информации. refrence.

0 голосов
/ 08 апреля 2020

Значение, которое мы передали, было «%», но, похоже, сервер избежал его. enter image description here

В качестве обходного пути вы можете создать приемник событий (элемент добавлен). Когда папка создана, если ее имя содержит «% 25», переименуйте ее. Пример кода:

public override void ItemAdded(SPItemEventProperties properties)
    {

        SPFolder folder = properties.ListItem.Folder;
        string name= folder.Name;
        if (name.Contains("%25")) {
            string newName=name.Replace("%25", "%");
            folder.Item["Name"] = newName;
            folder.ParentWeb.AllowUnsafeUpdates = true;
            folder.Item.Update();
            folder.ParentWeb.AllowUnsafeUpdates = false;
        }
        base.ItemAdded(properties);
    }

С уважением,

Амос

...