I am currently working on a project where we are upgrading our client’s MOSS 2007 based intranet site to SharePoint Server 2010 using the database attach upgrade method. While testing the upgraded 2010 site, we discovered that the Upload Document dialog in document libraries and Upload Picture dialog in picture libraries contained a “Destination Folder” field in addition to the “Upload Document” field. This field is only available in document libraries and picture libraries that were upgraded from the 2007 site. It is not available in document libraries or picture libraries that were newly created in the 2010 site. And this behavior was seen in the top level site and its sub-sites.
A Google search on this led me to this very informative and helpful blog by Brian McCullough. It looks like that this behavior is due to the different values that are assigned to the vti_foldersubfolderitemcount property in the Folder’s property bag for an upgraded object versus a new object.
For upgraded objects, this property’s value is set to 1.
For new objects, this property’s value is set to 0.
Also, the upgrade process sets the SPWeb.CustomUploadPage property for upgraded sites to a custom upload page titled uploadex.aspx, as opposed to upload.aspx which is the default page for file uploads. And this custom upload page contains the “Destination Folder” field.
The client did not want this “Destination Folder” field in the upload dialog. Brian provided a PowerShell script in his blog that loops through all Web sites that are contained within the site collection, including the top-level site and its subsites, and checks to see if the SPWeb.CustomUploadPage property is not equal to blank. If true, then it sets the SPWeb.CustomUploadPage property to blank.Doing so, removes the custom upload page (uploadex.aspx) from SPWeb, and reverts back to the default upload page (upload.aspx), which does not contain the “Destination Folder” field.
Here is the PowerShell script to remove the custom upload page (containing the Destination Folder field):
foreach($webapp in get-spwebapplication)
{
foreach($site in $webapp.Sites)
{
foreach($web in $site.AllWebs)
{
if ($web.CustomUploadPage -ne “”)
{
Out-File C:LogsWebsWithDestinationFolder_Log.txt -Append -InputObject $web.Url
$web.CustomUploadPage = “”
$web.Update()
}
}
}
}