SP.Folder.name property is read-only and hence it could not be used in update operation.
How to rename Folder using SharePoint 2013 REST
The following example demonstrates how to rename Folder using SharePoint 2013 REST API:
function executeJson(url,method,additionalHeaders,payload)
{
var headers = {};
headers["Accept"] = "application/json;odata=verbose";
if(method == "POST") {
headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
}
if (typeof additionalHeaders != 'undefined') {
for(var key in additionalHeaders){
headers[key] = additionalHeaders[key];
}
}
var ajaxOptions =
{
url: url,
type: method,
contentType: "application/json;odata=verbose",
headers: headers
};
if(method == "POST") {
ajaxOptions.data = JSON.stringify(payload);
}
return $.ajax(ajaxOptions);
}
function renameFolder(webUrl,folderUrl,name)
{
var folderItemUrl = webUrl + "/_api/web/GetFolderByServerRelativeUrl('" + folderUrl + "')/ListItemAllFields";
return executeJson(folderItemUrl,"GET").then(
function(data){
var itemPayload = {};
itemPayload['__metadata'] = {'type': data.d['__metadata']['type']};
itemPayload['Title'] = name;
itemPayload['FileLeafRef'] = name;
var itemUrl = data.d['__metadata']['uri'];
var additionalHeaders = {};
additionalHeaders["X-HTTP-Method"] = "MERGE";
additionalHeaders["If-Match"] = "*";
return executeJson(itemUrl,"POST",additionalHeaders,itemPayload);
});
}
Usage
How to rename folder named 2014
located under Documents
library to Archive
:
renameFolder(_spPageContextInfo.webAbsoluteUrl,'/Shared Documents/2014','Archive')
.done(function()
{
console.log('Folder has been renamed');
})
.fail(
function(error){
console.log(JSON.stringify(error));
});
Update
How to rename Folder using SharePoint 2013 REST (ver 2)
function renameFolder(webUrl,listTitle,itemId,name)
{
var itemUrl = webUrl + "/_api/Web/Lists/GetByTitle('" + listTitle + "')/Items(" + itemId + ")";
var itemPayload = {};
itemPayload['__metadata'] = {'type': getItemTypeForListName(listTitle)};
itemPayload['Title'] = name;
itemPayload['FileLeafRef'] = name;
var additionalHeaders = {};
additionalHeaders["X-HTTP-Method"] = "MERGE";
additionalHeaders["If-Match"] = "*";
return executeJson(itemUrl,"POST",additionalHeaders,itemPayload);
}
function getItemTypeForListName(name) {
return"SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem";
}
libraryToSearch
? Does it include the initial slash (/)? Server relative url's begin with a slash. If the url is as follows:Documents/MyFolderToRename
, it will fail. However,/Documents/MyFolderToRename
will not.Documents/MyFolderToRename
welcomepage
for a folder it is updating but only forName
it is not working? What could be the reason?/ListItemAllFields
to the end, and changingTitle
./Documents/MyFolderToRename
?