如何通过邮递员使用休息电话在 SharePoint 2019 上创建带有 % 字符的文件夹?

Posted

技术标签:

【中文标题】如何通过邮递员使用休息电话在 SharePoint 2019 上创建带有 % 字符的文件夹?【英文标题】:How to create a folder with % character on SharePoint 2019 using rest calls via postman? 【发布时间】:2020-07-19 06:56:12 【问题描述】:

我想在 SharePoint 2019 上创建一个带有 % 字符的文件夹,我正在使用以下调用:

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


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

但这是创建一个 Folder%25 而不是 Folder%。

如果我将 JSON 中的字符更改为 #,它会创建一个带有“#”字符的文件夹。

【问题讨论】:

【参考方案1】:

这样就可以了。

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

它将创建一个带有 % 字符的文件夹。它是为 SP Online 引入的,但也适用于 SP 2019。

我遇到的问题是 api 在两种情况下返回 400 Bad Request: a) 文件夹已经存在。 b) URL 格式错误。

我需要区分这两者。

您可以查看此Microsoft's page 以供进一步参考。

【讨论】:

【参考方案2】:

我们传入的值是'%',但似乎服务器逃过了它。

作为一种解决方法,您可以创建一个事件接收器(添加项目)。创建文件夹时,如果其名称包含“%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);
    

最好的问候,

阿莫斯

【讨论】:

以上是关于如何通过邮递员使用休息电话在 SharePoint 2019 上创建带有 % 字符的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用邮递员休息客户端将帖子请求发送到以下帖子方法

谷歌家庭行动休息api电话

通过邮递员发送二维字节数组(多个文件)作为多部分请求

Spring安全登录和注册

谷歌视觉 API 休息集成

春季安全+休息不起作用