SharePoint托管的加载项上载文件到同一域中的文档库

时间:2017-04-24 15:12:07

标签: jquery sharepoint-2013 add-in

根据要求,我创建了一个SharePoint托管的加载项。我已经成功地使用跨域创建文件夹并将文件保存在文档库中,但不能在同一个域中。现在要求说明我必须将文档上载到加载项中的库。所以,我创建了一个文档库" MyDocuments"在我的加载项结构中。除了选择文档库选项之外,我保留了列表的所有默认值。我已经能够在这个库中成功创建文件夹。但是,我似乎无法上传文件或弄清楚我做错了什么? 该库的URL为:

http://apps-9eef33c6be978a.apps.com/MyApplication/MyDocuments
(这是SharePoint为外接程序创建的URL)

错误消息

{"error":{"code":"-2147024809,
SystemArgumentException","message":{"lang":"en-US","value":"Value
does not fall within the expected range}}}:400-Bad Request

CODE

function addFileToFolder(arrayBuffer){
    var parts = fileInput[0].value.split('\\');
    var fileName = parts[parts.length-1];
    return $.ajax({
        url: "http://apps-9eef33c6be978a.apps.com/MyApplication/_api/web/GetFolderByServerRelativeUrl('/MyDocuments')/Files/add(url='bob.txt',overwrite=true)",
        type: "POST",
        data: arrayBuffer,
        processData: false,
        headers: {
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": "jQuery("#__REQUESTDIGEST").val(),
            "content-length": arrayBuffer.byteLength
        }
    });
};

1 个答案:

答案 0 :(得分:0)

我的解决方案在这里找到:

http://sharepoint.sureshc.com/2015/08/How-to-resolve-400-bad-request-error-getFolderByServerRelativeUrl-REST.html

如果链接断开,请按以下页面说明(感谢Suresh):

我正在使用SharePoint 2013 REST API从文档库中获取文件夹列表,特别是讨论列表。通常的lists / getByTitle端点获取文件夹列表但没有文件夹的URL。

当我在MSDN上检查REST API示例时,引起我注意的一件事是 getFolderByServerRelativeUrl 端点。不幸的是,MSDN中提供的示例不正确。根据MSDN,我们需要将文档库名称作为参数传递。

executor.executeAsync({
  url: "/_api/SP.AppContextSite(@target)/web
    /getfolderbyserverrelativeurl('/Shared Documents')?@target=''",
    method: "GET",
    headers: { "accept": "application/json; odata=verbose" },
    success: successHandler,
    error: errorHandler
});

当我们尝试这个时,我们得到400错误(错误请求)。那么使它运作的正确方法是什么?

您需要传递文档库的相对URL,而不仅仅是文档库名称。

url: "/_api/SP.AppContextSite(@target)/web
    /getfolderbyserverrelativeurl('/[Managed Path]/[Site]/Shared Documents')

示例:/ sites / SiteA / Shared Documents /

这可以按预期工作!