2017-04-06 64 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