Preparing to Upload Multiple Files in SharePoint 2010

Introduction

Consider a scenario where you need to upload thousands of files to SharePoint 2010. Before uploading the files you must prepare for it. This article outlines how to get prepared for uploading bulk files to SharePoint.

Preparation

There are at least the following 3 scenarios where the upload of the file can fail:

  1. Blocked file types
  2. Invalid special characters in the file name
  3. Size of the file
Not all the file formats can be uploaded to SharePoint (for example .exe files) and you cannot upload a file that has special characters in its name and there is a size restriction for a single file being uploaded in SharePoint. To find the list of blocked file types refer to this Link. The unsupported special characters in a file name are:

[~#%&*{}|:<>?/|"]

How to Upload Blocked file types

In order to upload the blocked file types in SP you need to either remove them from the blocked file types list (not recommended) or rename the file with a “.txt” extension. So when uploading the file SharePoint understands it as a .txt file and not as any other file type. In order to use the file you can download the file and rename it to the original file type.

The following piece of code renames the file to change its type to “.txt” format:

  1. $path = read-host "Enter the path"      
  2. $TestPath = test-path $path      
  3. if($TestPath)      
  4. {      
  5.    Get-ChildItem -path $path -recurse |       
  6.    Foreach-Object    
  7.    {      
  8.       $name = $_.name  
  9.       if($name.contains(".ade") -or $name.contains(".adp") -or $name.contains(".app") -or $name.contains  
  10.       (".asa") -or $name.contains(".ashx") -or $name.contains(".asmx") -or $name.contains(".asp") -or  
  11.       $name.contains(".bas") -or $name.contains(".bat") -or $name.contains(".cdx") -or   
  12.       $name.contains(".cer") -or $name.contains(".chm") -or $name.contains(".class") -or   
  13.       $name.contains(".cmd") -or $name.contains(".com") -or $name.contains(".config") -or   
  14.       $name.contains(".cpl") -or $name.contains(".crt") -or $name.contains(".csh") -or   
  15.       $name.contains(".dll") -or $name.contains(".exe") -or $name.contains(".fxp") -or   
  16.       $name.contains(".hlp") -or $name.contains(".hta") -or $name.contains(".htr") -or   
  17.       $name.contains(".htw") -or $name.contains(".ida") -or $name.contains(".idc") -or   
  18.       $name.contains(".idq") -or $name.contains(".ins") -or $name.contains(".isp") -or   
  19.       $name.contains(".its") -or $name.contains(".jse") -or $name.contains(".ksh") -or   
  20.       $name.contains(".lnk") -or $name.contains(".mad") -or $name.contains(".maf") -or   
  21.       $name.contains(".mag") -or $name.contains(".mam") -or $name.contains(".maq") -or   
  22.       $name.contains(".mar") -or $name.contains(".mas") -or $name.contains(".mat") -or   
  23.       $name.contains(".mau") -or $name.contains(".mav") -or $name.contains(".maw") -or   
  24.       $name.contains(".mda") -or $name.contains(".mdb") -or $name.contains(".mde") -or   
  25.       $name.contains(".mdt") -or $name.contains(".mdw") -or $name.contains(".mdz") -or   
  26.       $name.contains(".msc") -or $name.contains(".msh") -or $name.contains(".msh1") -or   
  27.       $name.contains(".msh1xml") -or $name.contains(".msh2") -or $name.contains(".msh2xml") -or  
  28.       $name.contains(".mshxml") -or $name.contains(".msi") -or $name.contains(".msp") -or   
  29.       $name.contains(".mst") -or $name.contains(".ops") -or $name.contains(".pcd") -or   
  30.       $name.contains(".pif") -or $name.contains(".prf") -or $name.contains(".prg") -or   
  31.       $name.contains(".printer") -or $name.contains(".pst") -or $name.contains(".reg") -or  
  32.       $name.contains(".rem") -or $name.contains(".scf") -or $name.contains(".scr") -or   
  33.       $name.contains(".sct") -or $name.contains(".shb") -or $name.contains(".shs") -or   
  34.       $name.contains(".shtm") -or $name.contains(".shtml") -or $name.contains(".soap") -or   
  35.       $name.contains(".stm") -or $name.contains(".url") -or $name.contains(".vb") -or   
  36.       $name.contains(".vbe") -or $name.contains(".vbs") -or $name.contains(".ws") -or   
  37.       $name.contains(".wsc") -or $name.contains(".wsf") -or $name.contains(".wsh") -or   
  38.       $name.contains(".ADE") -or $name.contains(".ADP") -or $name.contains(".APP") -or   
  39.       $name.contains(".ASA") -or $name.contains(".ASHX") -or $name.contains(".ASMX") -or   
  40.       $name.contains(".ASP") -or $name.contains(".BAS") -or $name.contains(".BAT") -or   
  41.       $name.contains(".CDX") -or $name.contains(".CER") -or $name.contains(".CHM") -or   
  42.       $name.contains(".CLASS") -or $name.contains(".CMD") -or $name.contains(".COM") -or   
  43.       $name.contains(".CONFIG") -or $name.contains(".CPL") -or $name.contains(".CRT") -or   
  44.       $name.contains(".CSH") -or $name.contains(".DLL") -or $name.contains(".EXE") -or   
  45.       $name.contains(".FXP") -or $name.contains(".HLP") -or $name.contains(".HTA") -or   
  46.       $name.contains(".HTR") -or $name.contains(".HTW") -or $name.contains(".IDA") -or   
  47.       $name.contains(".IDC") -or $name.contains(".IDQ") -or $name.contains(".INS") -or   
  48.       $name.contains(".ISP") -or $name.contains(".ITS") -or $name.contains(".JSE") -or   
  49.       $name.contains(".KSH") -or $name.contains(".LNK") -or $name.contains(".MAD") -or   
  50.       $name.contains(".MAF") -or $name.contains(".MAG") -or $name.contains(".MAM") -or   
  51.       $name.contains(".MAQ") -or $name.contains(".MAR") -or $name.contains(".MAS") -or   
  52.       $name.contains(".MAT") -or $name.contains(".MAU") -or $name.contains(".MAV") -or   
  53.       $name.contains(".MAW") -or $name.contains(".MDA") -or $name.contains(".MDB") -or   
  54.       $name.contains(".MDE") -or $name.contains(".MDT") -or $name.contains(".MDW") -or   
  55.       $name.contains(".MDZ") -or $name.contains(".MSC") -or $name.contains(".MSH") -or   
  56.       $name.contains(".MSH1") -or $name.contains(".MSH1XML") -or $name.contains(".MSH2") -or   
  57.       $name.contains(".MSH2XML") -or $name.contains(".MSHXML") -or $name.contains(".MSI") -or  
  58.       $name.contains(".MSP") -or $name.contains(".MST") -or $name.contains(".OPS") -or   
  59.       $name.contains(".PCD") -or $name.contains(".PIF") -or $name.contains(".PRF") -or   
  60.       $name.contains(".PRG") -or $name.contains(".PRINTER") -or $name.contains(".PST") -or   
  61.       $name.contains(".REG") -or $name.contains(".REM") -or $name.contains(".SCF") -or   
  62.       $name.contains(".SCR") -or $name.contains(".SCT") -or $name.contains(".SHB") -or   
  63.       $name.contains(".SHS") -or $name.contains(".SHTM") -or $name.contains(".SHTML") -or   
  64.       $name.contains(".SOAP") -or $name.contains(".STM") -or $name.contains(".URL") -or   
  65.       $name.contains(".VB") -or $name.contains(".VBE") -or $name.contains(".VBS") -or   
  66.       $name.contains(".WS") -or $name.contains(".WSC") -or $name.contains(".WSF") -or $  
  67.       name.contains(".WSH"))      
  68.       {      
  69.          $newname = $_.name + ".txt"      
  70.          write-host $newname      
  71.          Rename-Item -Path $_.fullname -newname ($newName)      
  72.       }      
  73.    }      
  74. }      
  75. else      
  76. {      
  77.    write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan      
  78.    write-host "SCRIPT FINISHED" -fore yellow      
  79. }     
The special characters that are not accepted in the file name are:
 
[~#%&*{}|:<>?/|"].

The following piece of code loops through all the files given in the path and replaces the special characters in the name with an empty value.
  1. $path = read-host "Enter the path"  
  2. $TestPath = test-path $path  
  3. if($TestPath)  
  4. {  
  5.    Get-ChildItem -path $path -recurse |   
  6.    Foreach-Object
       {   
  7.       $newName = $_.name -replace '[~#%&*{}|:<>?/|"]'''  
  8.       if (-not ($_.name -eq $newname))
          {  
  9.          Rename-Item -Path $_.fullname -newname ($newName)  
  10.       }  
  11.     }  
  12. }  
  13. else  
  14. {  
  15.    write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan  
  16.    write-host "SCRIPT FINISHED" -fore yellow  
  17. }  
Complete Code

Code 1
 
  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm    
  2. $LogFile = ".\ReplaceInvalidFileExtensionPatch-$LogTime.rtf"    
  3.   
  4. # Add SharePoint PowerShell Snapin    
  5.     
  6.     
  7. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )   
  8. {    
  9.    Add-PSSnapin Microsoft.SharePoint.Powershell    
  10. }    
  11.     
  12. start-transcript $logfile    
  13.     
  14. $path = read-host "Enter the path"    
  15. $TestPath = test-path $path    
  16. if($TestPath)    
  17. {    
  18.    Get-ChildItem -path $path -recurse |     
  19.    Foreach-Object  
  20.    {    
  21.       $name = $_.name     
  22.       if($name.contains(".ade") -or $name.contains(".adp") -or $name.contains(".app") -or   
  23.       $name.contains(".asa") -   or $name.contains(".ashx") -or $name.contains(".asmx") -or   
  24.       $name.contains(".asp") -or $name.contains(".bas") -or $name.contains(".bat") -or   
  25.       $name.contains(".cdx") -or $name.contains(".cer") -or $name.contains(".chm") -or   
  26.       $name.contains(".class") -or $name.contains(".cmd") -or $name.contains(".com") -or   
  27.       $name.contains(".config") -or $name.contains(".cpl") -or $name.contains(".crt") -or   
  28.       $name.contains(".csh") -or $name.contains(".dll") -or $name.contains(".exe") -or  
  29.       $name.contains(".fxp") -or $name.contains(".hlp") -or $name.contains(".hta") -or   
  30.       $name.contains(".htr") -or $name.contains(".htw") -or $name.contains(".ida") -or   
  31.       $name.contains(".idc") -or $name.contains(".idq") -or $name.contains(".ins") -or   
  32.       $name.contains(".isp") -or $name.contains(".its") -or $name.contains(".jse") -or   
  33.       $name.contains(".ksh") -or $name.contains(".lnk") -or $name.contains(".mad") -or   
  34.       $name.contains(".maf") -or $name.contains(".mag") -or $name.contains(".mam") -or   
  35.       $name.contains(".maq") -or $name.contains(".mar") -or $name.contains(".mas") -or   
  36.       $name.contains(".mat") -or $name.contains(".mau") -or $name.contains(".mav") -or   
  37.       $name.contains(".maw") -or $name.contains(".mda") -or $name.contains(".mdb") -or   
  38.       $name.contains(".mde") -or $name.contains(".mdt") -or $name.contains(".mdw") -or   
  39.       $name.contains(".mdz") -or $name.contains(".msc") -or $name.contains(".msh") -or   
  40.       $name.contains(".msh1") -or $name.contains(".msh1xml") -or $name.contains(".msh2") -or  
  41.       $name.contains(".msh2xml") -or $name.contains(".mshxml") -or $name.contains(".msi") -or   
  42.       $name.contains(".msp") -or $name.contains(".mst") -or $name.contains(".ops") -or $name.contains  
  43.       (".pcd") -or $name.contains(".pif") -or $name.contains(".prf") -or $name.contains(".prg") -or   
  44.       $name.contains(".printer") -or $name.contains(".pst") -or $name.contains(".reg") -or $name.contains  
  45.       (".rem") -or $name.contains(".scf") -or $name.contains(".scr") -or $name.contains(".sct") -or   
  46.       $name.contains(".shb") -or $name.contains(".shs") -or $name.contains(".shtm") -or $name.contains  
  47.       (".shtml") -or $name.contains(".soap") -or $name.contains(".stm") -or $name.contains(".url") -or  
  48.       $name.contains(".vb") -or $name.contains(".vbe") -or $name.contains(".vbs") -or $name.contains  
  49.       (".ws") -or $name.contains(".wsc") -or $name.contains(".wsf") -or $name.contains(".wsh") -or   
  50.       $name.contains(".ADE") -or $name.contains(".ADP") -or $name.contains(".APP") -or $name.contains  
  51.       (".ASA") -or $name.contains(".ASHX") -or $name.contains(".ASMX") -or $name.contains(".ASP") -or   
  52.       $name.contains(".BAS") -or $name.contains(".BAT") -or $name.contains(".CDX") -or $name.contains  
  53.       (".CER") -or $name.contains(".CHM") -or $name.contains(".CLASS") -or $name.contains(".CMD") -or   
  54.       $name.contains(".COM") -or $name.contains(".CONFIG") -or $name.contains(".CPL") -or $name.contains  
  55.       (".CRT") -or $name.contains(".CSH") -or $name.contains(".DLL") -or $name.contains(".EXE") -or  
  56.       $name.contains(".FXP") -or $name.contains(".HLP") -or $name.contains(".HTA") -or $name.contains  
  57.       (".HTR") -or $name.contains(".HTW") -or $name.contains(".IDA") -or $name.contains(".IDC") -or  
  58.       $name.contains(".IDQ") -or $name.contains(".INS") -or $name.contains(".ISP") -or $name.contains  
  59.       (".ITS") -or $name.contains(".JSE") -or $name.contains(".KSH") -or $name.contains(".LNK") -or   
  60.       $name.contains(".MAD") -or $name.contains(".MAF") -or $name.contains(".MAG") -or $name.contains  
  61.       (".MAM") -or $name.contains(".MAQ") -or $name.contains(".MAR") -or $name.contains(".MAS") -or  
  62.       $name.contains(".MAT") -or $name.contains(".MAU") -or $name.contains(".MAV") -or $name.contains  
  63.       (".MAW") -or $name.contains(".MDA") -or $name.contains(".MDB") -or $name.contains(".MDE") -or  
  64.       $name.contains(".MDT") -or $name.contains(".MDW") -or $name.contains(".MDZ") -or $name.contains  
  65.       (".MSC") -or $name.contains(".MSH") -or $name.contains(".MSH1") -or $name.contains(".MSH1XML") -or  
  66.       $name.contains(".MSH2") -or $name.contains(".MSH2XML") -or $name.contains(".MSHXML") -or  
  67.       $name.contains(".MSI") -or $name.contains(".MSP") -or $name.contains(".MST") -or $name.contains  
  68.       (".OPS") -or $name.contains(".PCD") -or $name.contains(".PIF") -or $name.contains(".PRF") -or  
  69.       $name.contains(".PRG") -or $name.contains(".PRINTER") -or $name.contains(".PST") -or $name.contains  
  70.       (".REG") -or $name.contains(".REM") -or $name.contains(".SCF") -or $name.contains(".SCR")   
  71.       -or $name.contains(".SCT") -or $name.contains(".SHB") -or $name.contains(".SHS") -or   
  72.       $name.contains(".SHTM") or $name.contains(".SHTML") -or $name.contains(".SOAP") -or   
  73.       $name.contains(".STM") -or $name.contains(".URL") -or $name.contains(".VB") -or $name.contains  
  74.       (".VBE") -or $name.contains(".VBS") -or $name.contains(".WS") -or $name.contains(".WSC") -or  
  75.       $name.contains(".WSF") -or $name.contains(".WSH"))    
  76.       {    
  77.          $newname = $_.name + ".txt"    
  78.          write-host $newname    
  79.          Rename-Item -Path $_.fullname -newname ($newName)    
  80.       }    
  81.    }    
  82. }    
  83. else    
  84. {    
  85.    write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan    
  86.    write-host "SCRIPT FINISHED" -fore yellow    
  87. }    
  88. stop-transcript  
Code 2
  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm    
  2. $LogFile = ".\ReplaceSpecialCharactersInFileNamePatch-$LogTime.rtf"    
  3.   
  4. # Add SharePoint PowerShell Snapin    
  5.     
  6.     
  7. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )   
  8. {    
  9.    Add-PSSnapin Microsoft.SharePoint.Powershell    
  10. }    
  11.     
  12. start-transcript $logfile    
  13.     
  14. $path = read-host "Enter the path"    
  15. $TestPath = test-path $path    
  16. if($TestPath)    
  17. {    
  18.    Get-ChildItem -path $path -recurse |     
  19.    Foreach-Object   
  20.    {     
  21.       $newName = $_.name -replace '[~#%&*{}|:<>?/|"]'''    
  22.       if (-not ($_.name -eq $newname))  
  23.       {    
  24.          Rename-Item -Path $_.fullname -newname ($newName)    
  25.       }    
  26.    }    
  27. }    
  28. else    
  29. {    
  30.    write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan    
  31.    write-host "SCRIPT FINISHED" -fore yellow    
  32. }    
  33. stop-transcript       
Execution Procedure 

Step 1: Download the script

Step 2: Navigate to the script path

Step 3: Execute the script



Enter the path where the files are placed.



Enter the path where the files are placed.

Conclusion

Thus this article explained how to prepare for uploading multiple files to SharePoint 2010 using a PowerShell script.