2017-04-24 7 views
0

根據要求,我創建了一個SharePoint託管的加載項。我已成功地使用跨域創建文件夾並將文件保存在文檔庫中,但不在同一個域中。這些要求現在聲明我必須將文檔上載到加載項中的庫。所以,我在我的加載結構中創建了一個文檔庫「MyDocuments」。除了選擇文檔庫選項外,我保留了列表的所有默認值。我已經能夠在這個庫中成功創建文件夾。但是,我似乎無法上傳文件或找出我做錯了什麼? 此庫的網址是:SharePoint託管的加載項將文件上傳到同一域中的文檔庫

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

我的解決辦法是在這裏找到:

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

如果鏈接已斷開,這裏是頁面狀態(非常感謝蘇雷什):

我工作在SharePoint 2013 REST API從文檔庫中獲取文件夾列表,特別是討論列表。通常的列表/ getByTitle端點獲取文件夾列表,但沒有該文件夾的URL。

當我查看MSDN的REST API示例時,引起我注意的一件事是getFolderByServerRelativeUrl端點。不幸的是,MSDN中提供的示例不正確。根據MSDN,我們需要將文檔庫名稱作爲參數傳遞。

executor.executeAsync({ 
    url: "/_api/SP.AppContextSite(@target)/web 
    /getfolderbyserverrelativeurl('/Shared Documents')[email protected]=''", 
    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') 

例如:/網站/站點A /共享文檔/

這按預期工作!

相關問題