Wednesday 3 December 2014

Uploading Files Using Javascript in Sharepoint Sandbox Solution and Farm Solution

Hi Friends ...Today i'm going to explain how to upload files in Sharepoint sandbox solution using SPservice.js.

The  below examples in this article use the SPservice.js  sharepoint spapi file and some default jQuery files  to add a local file to the Documents library .


The First thing need to set jquery reference files in your page (u need to download &  add spservice file inside style  library)


<script type="text/javascript" src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
<script type="text/javascript" src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js'></script>
<script type="text/javascript" src='/Style%20Library/jquery.SPServices-0.7.2.js'></script>

second thing need to set up control for selecting files from webpage,this is pretty simple use if input file control and asp server button control and calling function in order to upload file.

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script> 
<script type="text/javascript" src="/Style%20Library/jquery.SPServices-0.7.2.js"></script> 


<script type="text/javascript">
function FileUploadFunction() {
        var input, file, fr;
        if (typeof window.FileReader !== 'function') { alert("The file API isn't supported on this browser yet."); return; }
        input = document.getElementById('fileinput');
        if (!input) { alert("couldn't find the fileinput element.");}
        else if (!input.files) { alert("This browser doesn't seem to support the `files` property of file inputs."); }
        else if (!input.files[0]) { alert("Please select a file before clicking 'Load'"); }
        else {  file = input.files[0];
                var getFileBuffer = function (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();
            };
            getFileBuffer(file).then(function (buffer) {
                var bytes = new Uint8Array(buffer);
                var strt = base64ArrayBuffer(buffer);
                var path = document.getElementById("fileinput").value;
                var fileName = path.substr(path.lastIndexOf("\\") + 1, path.length);
                var weburl = "https://server/";
                var source = path;
                var Stream = strt;
                var Desturl = ["https://server/Shared%20Documents/" + fileName + ""];
                var now = new Date;
                $().SPServices({
                    operation: "CopyIntoItems",
                    webURL: weburl,
                    async: false,
                    SourceUrl: source,
                    Stream: Stream,
                    DestinationUrls: Desturl,
                    completefunc: function (xData, Status) {
                        debugger;
                        alert("Status=" + Status + " XML=" + xData.responseXML.xml);
                    }
                });
                return true;
            });}}

    function base64ArrayBuffer(arrayBuffer) {
        var base64 = ''
        var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
        var bytes = new Uint8Array(arrayBuffer)
        var byteLength = bytes.byteLength
        var byteRemainder = byteLength % 3
        var mainLength = byteLength - byteRemainder
        var a, b, c, d
        var chunk
        // Main loop deals with bytes in chunks of 3
        for (var i = 0; i < mainLength; i = i + 3) {
            // Combine the three bytes into a single integer
            chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]
            // Use bitmasks to extract 6-bit segments from the triplet
            a = (chunk & 16515072) >> 18 // 16515072 = (2^6 - 1) << 18
            b = (chunk & 258048) >> 12 // 258048   = (2^6 - 1) << 12
            c = (chunk & 4032) >> 6 // 4032     = (2^6 - 1) << 6
            d = chunk & 63               // 63       = 2^6 - 1
            // Convert the raw binary segments to the appropriate ASCII encoding
            base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]
        }
        // Deal with the remaining bytes and padding
        if (byteRemainder == 1) {
            chunk = bytes[mainLength]
            a = (chunk & 252) >> 2 // 252 = (2^6 - 1) << 2
            // Set the 4 least significant bits to zero
            b = (chunk & 3) << 4 // 3   = 2^2 - 1
            base64 += encodings[a] + encodings[b] + '=='
        } else if (byteRemainder == 2) {
            chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]
            a = (chunk & 64512) >> 10 // 64512 = (2^6 - 1) << 10
            b = (chunk & 1008) >> 4 // 1008  = (2^6 - 1) << 4
            // Set the 2 least significant bits to zero
            c = (chunk & 15) << 2 // 15    = 2^4 - 1
            base64 += encodings[a] + encodings[b] + encodings[c] + '='
        }
        return base64
    }
</script>


<input type="file" id="fileinput"/>
<button onclick="FileUploadFunction()">Load</button>​​​​​​


---------------------------------------------------------------------------------------------------------
Just copy the above code  will work .....    Please give your valuable feedback for the above post
in below comment box..it will help others  also ..

Note   
  • need to give SPservice jquery reference in your page in order to run the above code.
  • need to change  site url and document library url in FileUploadFunction  function

              

                     
Share:

No comments:

Post a Comment

© TBGsharepointforum All rights reserved | Designed by Blogger Templates