HOW TO: Change file extension of an existing item in SharePoint document library
Published May 01 2019 03:56 PM 8,407 Views
Microsoft

First published on TECHNET on Oct 08, 2013

This post is a contribution from Aaron Miao, an engineer with the SharePoint Developer Support team.

For various reasons, people want to change the file extension of an existing item in a document library.  For example, with SharePoint 2007, files with JSON extension in document library can be opened without problems.  However, once you upgrade to SharePoint 2010, you cannot open the file anymore.  You’ll get an error similar to what’s shown below.

An error occurred during the processing of /Shared Documents/test.json.

The page must have a <%@ webservice class=”MyNamespace.MyClass” … %> directive.

In order to be able to see the JSON file content with SharePoint UI, one option is to change the file extension from JSON to TXT.  But you cannot change the name or display name of the file.  This can be accomplished by two methods as shown in the below samples that uses PowerShell.  And of course, you can do the same with SharePoint server OM.

Use SPFile.MoveTo

$site = Get-SPSite "http://yoursite" 
$web = $site.RootWeb 
$list = $web.Lists["Shared Documents"] 
$item = $list.GetItemById(0) 
$file = $item.File 
$file.MoveTo($item.ParentList.RootFolder.Url + "/” + ”test.txt") 
$file.Update() 

Use SPFile.CopyTo

$site = Get-SPSite "http://yoursite" 
$web = $site.RootWeb 
$list = $web.Lists["Shared Documents"] 
$caml = ' 
 <Where> 
  <Eq> 
   <FieldRef Name="File_x0020_Type" /> 
   <Value Type="Text">json</Value> 
  </Eq> 
</Where> ' 

$query = new-object Microsoft.SharePoint.SPQuery 
$query.Query = $caml 
$items = $list.GetItems($query) 
foreach($item in $items) 
{ 
  $file = $item.File 
  $url = $file.ServerRelativeUrl 
  $newurl = $url.replace(".json", ".txt") 
  $file.CopyTo($newurl) 
} 

 

Hope this was helpful.

Version history
Last update:
‎Sep 01 2020 02:25 PM
Updated by: