2017-04-06 75 views
1

我正在NodeJS和ExpressJs上构建一个Web应用程序,我试图通过Sharepoint REST Api将文档上载到Sharepoint Online库。Sharepoint请求摘要值跨域

我可以验证并创建和更新列表项。我使用node-sp-auth进行身份验证,并使用express-request进行http请求。

为了访问Sharepoint REST API,我在头文件中使用了FormDigestValue

页眉:

Headers['Content-Type'] = 'application/json;odata=verbose'; 
Headers['X-RequestDigest'] = FormDigestValue; 
Headers['Accept'] = "application/json;odata=verbose"; 
Headers['X-HTTP-Method'] = "POST"; 

这是工作正常,当我尝试在自定义列表创建/更新列表项。但是,当我尝试上传文件我收到以下错误:

body: '{"error":{"code":"-1, Microsoft.SharePoint.SPException","message": 
{"lang":"en-US","value":"There is no app context to execute this request."}}}' } } 

我使用上传的网址:

siteurl + "/_api/SP.AppContextSite(@TargetSite)/web/lists/getByTitle(@TargetLibrary)/RootFolder/Files/add([email protected],overwrite='true')?" + 
     "@TargetSite='" + siteurl + "'" + 
     "&@TargetLibrary='" + libraryName + "'" + 
     "&@TargetFileName='" + fileName + "'"; 

POST请求:

request.post({ 
    url: url, 
    type: "POST", 
    headers: uploadHeaders, 
    binaryStringRequestBody: true, 
    body: fileData, 
}) 

任何想法我做错了?

回答

2

使用这种格式,而不是为后:

url: url, 
type: 'POST', 
data: fileData, 
processData: false, 
headers: { 
    'Accept':'application/json;odata=verbose', 
    'X-RequestDigest': digest, 
    'Content-Length': fileData.byteLength 
} 

如果没有RequestDigest已经调用_api/SP.AppContextSite(@TargetSite)/ contextinfo

+0

我认为帮助。现在我得到''拒绝访问,您没有权限执行此操作或访问此资源。“'我确信我拥有正确的权限。 – TietjeDK