How To Upload Document In Document Library Using JSOM In Sharepoint 2013

This blog provides information on how to upload document in document library, using JSOM (ECMA script) in SharePoint 2013.

Steps
  • Create SharePoint page in pages library.
  • Add Content Editor Web part in SharePoint page.
  • Create a .txt file and save the code given below in txt file. Ex- "fileUpload.txt"
  • Upload fileUpload.txt in Site Assets library. 
  • Refer the script file from CEWP and save the page.

     
fileUpload.txt - Code 
  1. <html>  
  2.   
  3.     <head>  
  4.         <script language="javascript" type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>  
  5.         <script language="javascript" type="text/javascript">  
  6. var fileInput;  
  7. $(document)  
  8.     .ready(function () {  
  9.         fileInput = $("#getFile");  
  10.         SP.SOD.executeFunc('sp.js''SP.ClientContext', registerClick);  
  11.     });  
  12.   
  13. function registerClick() {  
  14.     //Register File Upload Click Event   
  15.     $("#addFileButton").click(readFile);  
  16. }  
  17. var arrayBuffer;  
  18.   
  19. function readFile() {  
  20.     
  21.     //Get File Input Control and read th file name  
  22.     var element = document.getElementById("getFile");  
  23.     var file = element.files[0];  
  24.     var parts = element.value.split("\\");  
  25.     var fileName = parts[parts.length - 1];  
  26.     
  27.     //Read File contents using file reader  
  28.     var reader = new FileReader();  
  29.     reader.onload = function (e) {  
  30.         uploadFile(e.target.result, fileName);  
  31.     }  
  32.     reader.onerror = function (e) {  
  33.         alert(e.target.error);  
  34.     }  
  35.     reader.readAsArrayBuffer(file);  
  36. }  
  37. var attachmentFiles;  
  38.   
  39. function uploadFile(arrayBuffer, fileName) {  
  40.     //Get Client Context,Web and List object.  
  41.     var clientContext = new SP.ClientContext();  
  42.     var oWeb = clientContext.get_web();  
  43.     var oList = oWeb.get_lists().getByTitle('Documents');  
  44.     
  45.     //Convert the file contents into base64 data  
  46.  var bytes = new Uint8Array(arrayBuffer);  
  47.     var i, length, out = '';  
  48.     for (i = 0, length = bytes.length; i < length; i += 1) {  
  49.         out += String.fromCharCode(bytes[i]);  
  50.     }  
  51.     var base64 = btoa(out);  
  52.     //Create FileCreationInformation object using the read file data  
  53.     var createInfo = new SP.FileCreationInformation();  
  54.     createInfo.set_content(base64);  
  55.     createInfo.set_url(fileName);  
  56.     
  57.     //Add the file to the library  
  58.     var uploadedDocument = oList.get_rootFolder().get_files().add(createInfo)  
  59.     //Load client context and execcute the batch  
  60.     clientContext.load(uploadedDocument);  
  61.     clientContext.executeQueryAsync(QuerySuccess, QueryFailure);  
  62. }  
  63.   
  64. function QuerySuccess() {  
  65.     console.log('File Uploaded Successfully.');  
  66.     alert("File Uploaded Successfully.").  
  67. }  
  68.   
  69. function QueryFailure(sender, args) {  
  70.     console.log('Request failed with error message - ' + args.get_message() + ' . Stack Trace - ' + args.get_stackTrace());  
  71. alert("Request failed with error message - " + args.get_message() + " . Stack Trace - " + args.get_stackTrace());  
  72. }  
  73.   
  74.         </script>  
  75.     </head>  
  76.   
  77.     <body>  
  78.         <input id="getFile" type="file" /><br /> <input id="addFileButton" type="button" value="Upload" />  
  79.     </body>  
  80.     <html>  
 Now, refresh the page.
 
 
 
Select the file and click upload.

Now, go to Document library and verify your uploaded document.