根据要求,我创建了一个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
}
});
};
答案 0 :(得分:0)
我的解决方案在这里找到:
如果链接断开,请按以下页面说明(感谢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 /
这可以按预期工作!