2014-06-26 88 views
2

我正在開發一個項目,通過jquery和其餘api將文件從一個文檔庫複製到另一個Sharepoint 2013中。我的解決方案是基於此http://techmikael.blogspot.com/2013/07/how-to-copy-files-between-sites-using.htmlSharepoint 2013使用rest api添加大文件

下面的代碼適用於較小的文件大小(64mb或更少)。不過,當我嘗試複製較大的文件時(128Mb及以上),我收到錯誤消息。 addFileBinary函數返回錯誤回調,並顯示「沒有足夠的存儲空間可用於完成此操作。」有沒有解決方法?我正在使用IE11。

$(document).ready(function() 
{ 
    //Get binary data of file to copy 
    getFileBinary(fromUrl, FileServerRelativeUrl, function (binary) 
    {  
     //Copy binary file data to new library 
     addFileBinary(toUrl, newLibraryName, FileName, binary, function (newFile) 
     { 
      alert("File Added"); 
     },null); 

    },null); 
} 


function getFileBinary(url, filePath, complete, failure) 
{ 
    var executor = new SP.RequestExecutor(url); 
    var info = { 
     url: "_api/web/getfilebyserverrelativeurl('" + filePath + "')/$value", 
     method: "GET", 
     binaryStringResponseBody: true, 
     success: function (data) { 
      //binary data available in data.body 
      complete(data.body); 
     }, 
     error: function (err) { 
      failure(err); 
     } 
    }; 
    executor.executeAsync(info); 
} 

function addFileBinary(url, libraryName, fileName, arrayBuffer, complete, failure) { 
    var executor = new SP.RequestExecutor(url); 
    var info = { 
     url: "_api/web/GetFolderByServerRelativeUrl('" + libraryName + "')/Files/Add(url='" + fileName + "', overwrite=true)?$expand=ListItemAllFields,ListItemAllFields/ParentList", 
     headers: { 
      "Accept": "application/json; odata=verbose", 
      "content-length": arrayBuffer.length, 
     }, 
     method: "POST", 
     contentType: "application/json;odata=verbose", 
     binaryStringRequestBody: true, 
     body: arrayBuffer, 
     state: 'Update', 
     success: function (data) { 
      var jsonObj = $.parseJSON(data.body); 
      complete(jsonObj.d); 
     }, 
     error: function (err) { 
      failure(err); 
     } 
    }; 
    executor.executeAsync(info); 
} 

我已經做了以下嘗試糾正這個問題(沒有工作)。

  • 改變了Web應用程序的常規設置,以允許文件長達2047
  • 增加連接超時設置IIS中的SharePoint。
  • 新增的maxRequestLength = 「2096128」 executionTimeout = 「999999」 在web.config中
  • 的httpRuntime增加了maxAllowedContendLength在web.config 2147483647

回答

相關問題