需要使用 REST - SharePoint 托管应用程序将文件夹添加到 SharePoint 2013 中的文档库



我正在尝试在SharePoint 2013 SharePoint托管应用程序中使用REST将文件夹添加到文档库。 它托管在 Office 365 开发人员网站中。 我在这里遵循 MSDN 中的准则,并在 dev.office.com 上使用出色的示例(尤其是 REST 帮助程序)。

在调试期间捕获请求时,与文档和示例相比,我看不到我的请求有任何问题。 我也没有遇到任何 GET 请求的问题。

这是我的要求:

var datatext = "{'__metadata': {'type': 'SP.Folder'}, 'ServerRelativeUrl': '" + serverRelativeUrl + foldername + "'}";
$.ajax({
    url : $appweburl + "/_api/web/folders",
    type: "POST",
    data: datatext,
    headers: {
        "accept": "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),
        "content-type": "application/json;odata=verbose",
        "content-length": datatext.length
    },
    success: function (data) {
        success(data);
    },
    error: function (data) {
        failure(data);
    }
});

这将生成错误"值不在预期范围内"

因此,这使用"数据"而不是"正文"

,因为"正文"总是生成 JSON 读取器错误。 所有示例都指示"body",但我发现其他显示此键的来源应该是这样的 POST 中的"数据",它解决了 JSON 读取器错误。 我确保ServerRelativeUrl以"/"和文件名开头。

任何帮助将不胜感激。

编辑:为了跟进这一点,我只成功使用了JSOM。 事实证明,您必须将 ListItem 添加到列表中,并将内容类型指定为文件夹才能实现此目的。 它可以工作,但它让我想知道您是否必须在 REST 中做类似的事情 - 即不使用文件夹端点,而是像将列表项添加到列表一样。 我还没有证实。

通常,由于ServerRelativeUrl属性以不正确的格式指定,因此会发生错误Value does not fall within the expected range

支持以下格式:

  • [Document Library]/[New Folder]列表/库相对网址
  • /[Site]/[Web]/[Document Library]/[New Folder] - 网站集相对网址

  • http(s)://[Server]/[Site]/[Web]/[Document Library]/[New Folder]绝对网址

如何使用 SharePoint 2013 REST 创建文件夹

假定以下网站结构:

`News` site (under `sites` managed path)
   |
   `Documents` library
       |
      `Archive` folder

然后,以下示例演示如何在库中创建名为 2010 Documents文件夹:

例 1

createFolder(_spPageContextInfo.webAbsoluteUrl,'/sites/news/Documents/Archive/2011')
.done(function(data)
{
    var folder = data.d;
    console.log('Folder ' + folder.Name  + ' has been created successfully');
})
.fail(
function(error){
    console.log(JSON.stringify(error));
});

例 2

createFolder(_spPageContextInfo.webAbsoluteUrl,'Documents/Archive/2010')
.done(function(data)
{
    var folder = data.d;
    console.log('Folder ' + folder.Name  + ' has been created successfully');
})
.fail(
function(error){
    console.log(JSON.stringify(error));
});

哪里

function executeRequest(url,method,headers,payload) 
{
    if (typeof headers == 'undefined' || headers == null){
        headers = {};
    }
    headers["Accept"] = "application/json;odata=verbose";
    if(method == "POST") {
        headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
    }   
    var ajaxOptions = 
    {       
       url: url,   
       type: method,  
       contentType: "application/json;odata=verbose",
       headers: headers
    };
    if(method == "POST") {
      ajaxOptions.data = JSON.stringify(payload);
    }  
    return $.ajax(ajaxOptions);
}
function createFolder(webUrl,folderUrl) 
{    
    var url = webUrl + "/_api/web/folders";   
    var folderPayload = { '__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': folderUrl}; 
    return executeRequest(url,'POST',null,folderPayload);
}

相关内容

  • 没有找到相关文章

最新更新