Pages

Showing posts with label DocumentLibrary. Show all posts
Showing posts with label DocumentLibrary. Show all posts

Sunday, October 4, 2015

Upload files to SharePoint Document Library and Sub Folders with Meta Data Programmatically

This post going to describe that how to create a Folder(Main Folder) within a Document Library and create a Sub Folder within Main Folder and upload files to Sub Folder.

private void UploadContractDocuments(string paraMainFolderName, string paraSubFolderName, 
            string paraContractNumber, DateTime paraStartDate, DateTime paraEndDate) 
        {
            try
            {
                string mainFolderName = paraMainFolderName;
                string subFolderName = paraSubFolderName;

                using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                {
                    site.AllowUnsafeUpdates = false;

                    using (SPWeb web = site.OpenWeb())
                    {
                        web.AllowUnsafeUpdates = true;

                        //Check whether file upload control contains a file
                        if (ContractFileUpload.HasFile)
                        {
                            SPDocumentLibrary documentLibrary = web.Lists["ContractDocuments"] as SPDocumentLibrary;

                            string FolderPath = documentLibrary.RootFolder.Url + "/" + mainFolderName;//Main folder path
                            string SubFolderPath = documentLibrary.RootFolder.Url + "/" + mainFolderName + "/" + subFolderName;//Sub folder path

                            //Check whether main folder already exist
                            if (!web.GetFolder(FolderPath).Exists)
                            {
                                //Create main folder if not exist
                                SPListItem newFolder = documentLibrary.Items.Add("", SPFileSystemObjectType.Folder, mainFolderName);
                                newFolder.Update();

                                //Create sub folder inside main folder
                                string subFolderUrl = web.Url + "/" + newFolder.Url;

                                SPListItem subFolder1 = documentLibrary.Items.Add(subFolderUrl, SPFileSystemObjectType.Folder, subFolderName.ToString());
                                subFolder1.Update();
                            }
                            else
                            {
                                //Check for subfolder if main folder is already exist
                                if (!web.GetFolder(SubFolderPath).Exists)
                                {
                                    //Create sub folder if not exist
                                    string subFolderUrl = FolderPath;

                                    SPListItem subFolder1 = documentLibrary.Items.Add(subFolderUrl, SPFileSystemObjectType.Folder, subFolderName.ToString());
                                    subFolder1.Update();
                                }
                            }

                            Stream fStream = RequestModuleFileUpload.PostedFile.InputStream;
                            byte[] _byteArray = new byte[fStream.Length];
                            fStream.Read(_byteArray, 0, (int)fStream.Length);
                            fStream.Close();

                            string fileName = RequestModuleFileUpload.PostedFile.FileName;

                            string _fileUrl = documentLibrary.RootFolder.Url + "/" + mainFolderName + "/" + subFolderName + "/" + Path.GetFileNameWithoutExtension(fileName) + Path.GetExtension(fileName);
                            bool IsOverwriteFile = true;

                            //Create meta data
                            var docMetadata = new Hashtable {
                                        { "ContractNumber", paraContractNumber },
                                        { "StartDate", paraStartDate},
                                        { "EndDate", paraEndDate }
                                        };

                            SPFile file = documentLibrary.RootFolder.Files.Add(_fileUrl, _byteArray, docMetadata, IsOverwriteFile);
                            SPListItem item = file.Item;

                            file.Update();
                            documentLibrary.Update();
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

Saturday, August 15, 2015

Uplaod Files to SharePoint Document Library with Meta Data using ECMA Script

Uplaod files to SharePoint document library using ECMA script (javascript client object model) :

UploadDocuments = function () {
    if (!window.FileReader) {
        alert("Browser does not support the HTML5 File APIs");
        return;
    }
    var call = getDocument();

    call.done(function (buffer, fileName) {
        var call2 = uploadDocument(buffer, fileName);
        call2.done(function (data, textStatus, jqXHR) {
            var call3 = getItem(data.d);
            call3.done(function (data, textStatus, jqXHR) {
                var item = data.d;
                var call4 = getCurrentUser();
                call4.done(function (data, textStatus, jqXHR) {
                    var userId = data.d.CurrentUser.Id;
                    var call5 = updateItemFields(item, userId);
                    call5.done(function (data, textStatus, jqXHR) {
                        var div = jQuery("#msg");
                        div.text("Item added");
                    });
                    call5.fail(failHandler);
                });
                call4.fail(failHandler);
            });
            call3.fail(failHandler);
        });
        call2.fail(failHandler);
    });
    call.fail(function (errorMessage) {
        alert(errorMessage);
    });

    function getDocument() {
        var def = new jQuery.Deferred();

        var element = document.getElementById("fileIdCard");
        var file = element.files[0];
        var parts = element.value.split("\\");
        var fileName = parts[parts.length - 1];

        var reader = new FileReader();
        reader.onload = function (e) {
            def.resolve(e.target.result, fileName);
        }
        reader.onerror = function (e) {
            def.reject(e.target.error);
        }
        reader.readAsArrayBuffer(file);
        return def.promise();
    }
    function uploadDocument(buffer, fileName) {
        var url = String.format("{0}/_api/Web/Lists/getByTitle('ID Card Attachments')/RootFolder/Files/Add(url='{1}', overwrite=true)",
            _spPageContextInfo.webAbsoluteUrl, fileName);
        //alert(url);

        var call = jQuery.ajax({
            url: url,
            type: "POST",
            data: buffer,
            processData: false,
            headers: {
                Accept: "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                "Content-Length": buffer.byteLength
            }
        });
        return call;
    }

    function getItem(file) {
        var call = jQuery.ajax({
            url: file.ListItemAllFields.__deferred.uri,
            type: "GET",
            dataType: "json",
            headers: {
                Accept: "application/json;odata=verbose"
            }
        });
        return call;
    }
    function GetItemTypeForListName(name) {
        return "SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem";
    }
    function getCurrentUser() {
        var call = jQuery.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/?$select=CurrentUser/Id&$expand=CurrentUser/Id",
            type: "GET",
            dataType: "json",
            headers: {
                Accept: "application/json;odata=verbose"
            }
        });
        return call;
    }

    function updateItemFields(item, userId) {
        var itemType = GetItemTypeForListName('ID Card Attachments');
        //alert(itemType);
        var now = new Date();
        var call = jQuery.ajax({
            url: _spPageContextInfo.webAbsoluteUrl +
                "/_api/Web/Lists/getByTitle('ID Card Attachments')/Items(" +
                item.Id + ")",
            type: "POST",
            data: JSON.stringify({
                '__metadata': { 'type': 'SP.Data.IdCardAttachmentsItem' },
                'Employee Type': '' + "Permanant"
            }),
            headers: {
                Accept: "application/json;odata=verbose",
                "Content-Type": "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                "IF-MATCH": item.__metadata.etag,
                "X-Http-Method": "MERGE"
            }
        });

        return call;
    }
}
failHandler = function (jqXHR, textStatus, errorThrown) {
    var response = JSON.parse(jqXHR.responseText);
    var message = response ? response.error.message.value : textStatus;
    alert("Call failed. Error: " + message);
}

onQuerySuccess = function () {
alert("Success.!");
}
onQueryFail = function (sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}