Sunday, February 5, 2012

Feature handler to save documents to physical folder

  SPSite site = new SPSite(properties.SiteId);
        using (SPWeb web = site .OpenWeb()) {

            string folderName = "";
            SPFolder cols = web.Folders[site.Url + "/TestDocumentLib"];

            SPList list = web.Lists["TestDocumentLib"];
            SPDocumentLibrary docLibrary = (SPDocumentLibrary)list;
            SPListItem listItem = docLibrary.GetItemById(properties.ListItemId);

            SPFile file1 = web.GetFile(listItem.UniqueId);
            string strUrl = file1.ServerRelativeUrl.ToString();
            string destinationFolderUrl = @"C:\Documents and Settings\Documents\";
            byte[] binfile = file1.OpenBinary();
            string strRootUrl = list.RootFolder.ServerRelativeUrl.ToString();


            int count = strUrl.Split('/').Length - 1;
            string[] str = strUrl.Split('/');

            for (int i = 1; i < count; i++)
            {
                destinationFolderUrl += str[i] + "\\" + folderName;
            }
            SPSecurity.RunWithElevatedPrivileges(delegate()
           {
               if (!(Directory.Exists(destinationFolderUrl)))
               {

                   Directory.CreateDirectory(destinationFolderUrl);

                   FileStream fstream = System.IO.File.Create(destinationFolderUrl + "\\" + file1.Name);
                   fstream.Write(binfile, 0, binfile.Length);
                   fstream.Close();
               }
               else
               {
                   //Directory.CreateDirectory(destinationFolderUrl);
                   FileStream fstream = System.IO.File.Create(destinationFolderUrl + "\\" + file1.Name);
                   fstream.Write(binfile, 0, binfile.Length);
                   fstream.Close();
               }

           });
        }
}

No comments:


A sales engineer is someone who promise you a bridge, even when there's no river.