Monday, 22 October 2018

Upload files into a folder of SharePoint Document Library - REST API

Upload files into a folder of SharePoint Document Library - REST API 

var arrayBuffer;  

 <input type="file" name="attachment" id="inputFileUpload" class="input-file-control"/>

function uploadFiles(fileInputControlId, webUrl, documentLibraryName, folderName) {
         for (var i = 0; i < $(fileInputControlId)[0].files.length; i++) {
             var uploadFile = $(fileInputControlId)[0].files[i];
             var getFile = getFileBuffer(uploadFile);
             getFile.done(function (arrayBuffer) {
                 uploadFileToFolder(webUrl, documentLibraryName, folderName, uploadFile.name, arrayBuffer, function (data) {
                   alert("File upload done successfully");
                 }, function (data) {
                   alert("File uploading fail");
                 });
             });
         }
     }


 //Get the uploaded file buffer.
 function getFileBuffer(uploadFile) {
         var deferred = jQuery.Deferred();
         var reader = new FileReader();
         reader.onloadend = function (e) {
             deferred.resolve(e.target.result);
         }
         reader.onerror = function (e) {
             deferred.reject(e.target.error);
         }
         reader.readAsArrayBuffer(uploadFile);
         return deferred.promise();
     }



//Upload files into SharePoint library with REST API
 function uploadFileToFolder(webUrl, documentLibraryName, folderName, fileName, arrayBuffer, success, failure) {
         //file added to the subfolder of Rootfolder.
         var apiUrl = webUrl + "/_api/web/lists/getByTitle('" + documentLibraryName + "')/RootFolder/folders('" + folderName + "')/files/add(url='" + fileName + "', overwrite=true)";

         $.ajax({
             url: apiUrl,
             type: "POST",
             data: arrayBuffer,
             processData: false,
             async:false,
             headers: {
                 "accept": "application/json;odata=verbose",
                 "X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
             },
             success: function (data) {
                 success(data);
             },
             error: function (data) {
                 failure(data);
             }
         });
     }

No comments:

Post a Comment