How to upload a document file in SharePoint list with REST API using jquery?

  Upload a document file in SharePoint list with REST API using jquery:

Use the below snippet code

<html>
<head>
<script src="/Site%20Assets/js/jquery-1.11.1.min.js"></script>
<script src="/Site%20Assets/Assets/Jquery/jquery-2.2.4.min.js"></script>
</head>
<body>
<div>
        <input id="uploadFile" type="file">
</div>
<button type="button" id="saveDocuments">Save </button>
<script>
$(document).ready(function(){
    var listName = 'ERepairShop';
    function getFileBuffer(file) {
        var deferred = $.Deferred();
        var reader = new FileReader();
        reader.onload = function (e) {
            deferred.resolve(e.target.result);
        }
        reader.onerror = function (e) {
            deferred.reject(e.target.error);
        }
        reader.readAsArrayBuffer(file);
        return deferred.promise();
    }

    function uploadFileSP(listName, id, fileArray, fileCount) {
        var FilesCount = 0;
        var deferred = $.Deferred();
        var uploadStatus = "";
        var file = fileArray[0];
        var getFile = getFileBuffer(file);

        getFile.done(function (buffer, status, xhr) {
            var bytes = new Uint8Array(buffer);
            var content = new SP.Base64EncodedByteArray();
            var queryUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/lists/GetByTitle('" + listName + "')/items(" + id + ")/AttachmentFiles/add(FileName='" + file.name + "')";
            var uploadCount = 0;
            $.ajax({
                url: queryUrl,
                type: "POST",
                processData: false,
                contentType: "application/json;odata=verbose",
                data: buffer,
                headers: {
                    "accept": "application/json;odata=verbose",
                    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                    "content-length": buffer.byteLength
                },
                success: function (data) {
                    FilesCount++;
                    uploadStatus = FilesCount;
                    fileArray.shift();
                    if (fileArray.length > 0) {
                        uploadFileSP("UploadTest", id, fileArray, fileArray.length);
                    }
                    else {
                        alert('Document Upload Successfully.');
                    }
                },
                error: function (err) {
                   alert('Something Went Wrong.');
                }
            });
            deferred.resolve(uploadStatus);
        });

        getFile.fail(function (err) {
            deferred.reject(err);
        });
        return deferred.promise();
    }

    function AddAttachments()
    {
        var fileInput = $('#uploadFile');
        var fileCount = fileInput[0].files.length;
        if (fileCount === 0 ) {
                alert('Please upload file.');
                return;
        }
        var fileArray = [];
        for (var i = 0; i < fileCount; i++) {
        fileArray.push(fileInput[0].files[i]);
        }
        console.log(fileArray);
        console.log(fileInput);
        id=1;
    uploadFileSP(listName, id, fileArray, fileCount);
    }
    $("#saveDocuments").on('click', function(){
        AddAttachments();  
    })
});
</script>
</body>
</html>

Comments

Popular posts from this blog

Get list item entity type full name of a SharePoint list using REST API

Get SharePoint list name by GUID

Get Current Web Logged In User of SharePoint Site in jQuery