文档章节

SharePoint下用C#代码上传文档至文档库的子文件夹中

 木宛城主
发布于 2015/03/02 19:42
字数 573
阅读 9
收藏 0

SharePoint的文档库非常方便,可以管理日常的文档,更强大的是可以创建文件夹来分类,通常在UI界面上是非常简单了,点击文件夹,Create a Folder即可。但是,怎样手动去创建文件夹呢,怎样在文件夹中创建子文件夹。

项目分析

  • 举个栗子,我需要上传文档到文档库,希望把该文件上传到以年、月、日、上传人命名的子文件夹中,如:2013年-->5月-->11日-->陈小春,如下图所示这样

  • 点击2013年,进入当前月子文件夹

  • 点击当前月,进入以上传人命名的子文件夹

  • 点击上传人(陈小春),即可看到我们上传的文档

代码实现

  • 首先我们完成对参数的设置,初始化参数
            //获取年度参数
            string folderYearParameter = DateTime.Now.Year.ToString() + "";
            //获取月度参数
            string folderMonthParameter = DateTime.Now.Month.ToString() + "";
            //获取当前登录用户名:
            string currentLoginName = SPContext.Current.Web.CurrentUser.LoginName;
            currentLoginName = currentLoginName.Substring(currentLoginName.LastIndexOf("\\") + 1);

            string currentUserDisplayName;
            //获得Display name
            //当Administrator上传有问题 ?因为 当administrator登陆时 DisplayName=Wllgwh\administrator,invalid Path
            SPUser spUser = SPContext.Current.Web.AllUsers[SPContext.Current.Web.CurrentUser.LoginName];
            currentUserDisplayName = spUser.Name;
            if (currentUserDisplayName.Contains("\\"))
            {
                currentUserDisplayName = currentUserDisplayName.Substring(currentUserDisplayName.LastIndexOf("\\")+1);   
            }
  • 提权

创建文件夹之前,判断是否存在该文件夹,若不存在,则创建之。之后创建Byte数组,将上传的文档附加到SubFolder中。

SPSecurity.RunWithElevatedPrivileges(delegate()
            {

                var homeUrl = SPContext.Current.Site.Url;
                SPSite site = new SPSite(homeUrl + "/jxkp");
                SPWeb web = site.OpenWeb();
                //获取List
                SPList list = web.Lists.TryGetList("绩效考评");
                SPFolder folderYear =
                list.ParentWeb.GetFolder(list.RootFolder.ServerRelativeUrl + "/" + folderYearParameter);

                if (!folderYear.Exists)
                {
                    SPListItem folder = list.Items.Add(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, folderYearParameter);
                    web.AllowUnsafeUpdates = true;
                    folder.Update();
                    web.AllowUnsafeUpdates = false;
                }

                //判断folderMonth是否存在,不存在则创建
                SPFolder folderMon = list.ParentWeb.GetFolder(list.RootFolder.ServerRelativeUrl + "/" + folderYearParameter + "/" + folderMonthParameter);
                if (!folderMon.Exists)
                {
                    //创建子文件夹

                    SPListItem subFolder = list.AddItem(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, folderYearParameter + "/" + folderMonthParameter);
                    web.AllowUnsafeUpdates = true;
                    subFolder.Update();
                    web.AllowUnsafeUpdates = false;
                }

                //判断CurrentlyUser是否存在,不存在则创建,这么长的一串,之后重构
                SPFolder folderCurrUser = list.ParentWeb.GetFolder(list.RootFolder.ServerRelativeUrl + "/" + folderYearParameter + "/" + folderMonthParameter + "/" + currentUserDisplayName);
                if (!folderCurrUser.Exists)
                {
                    SPListItem userFolder = list.AddItem(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, folderYearParameter + "/" + folderMonthParameter + "/" + currentUserDisplayName);
                    web.AllowUnsafeUpdates = true;
                    userFolder.Update();
                    web.AllowUnsafeUpdates = false;
                }                          

                if (fileUploadJxkp.PostedFile != null)
                {
                    if (fileUploadJxkp.PostedFile.ContentLength > 0)
                    {
                        System.IO.Stream stream = fileUploadJxkp.PostedFile.InputStream;
                        byte[] bytFile = new byte[Convert.ToInt32(fileUploadJxkp.PostedFile.ContentLength)];
                        stream.Read(bytFile, 0, Convert.ToInt32(fileUploadJxkp.PostedFile.ContentLength));
                        stream.Close();

                        SPFolder subSPFolder =
                       list.ParentWeb.GetFolder(list.RootFolder.ServerRelativeUrl + "/" + folderYearParameter + "/" +
                                                 folderMonthParameter + "/" + currentUserDisplayName);
                        web.AllowUnsafeUpdates = true;
                        subSPFolder.Files.Add(System.IO.Path.GetFileName(fileUploadJxkp.PostedFile.FileName),
                                              bytFile, true);
                        web.AllowUnsafeUpdates = false;
                       // labMsg.Text = "绩效考评已上传成功";
                        string successScript = string.Format("$.jnotify('{0}');", "上传成功");
                        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "smManager", successScript, true);
                    }
                }
            });

小结

SharePoint的文档库归根到底还是List,学习SharePoint是条漫长的路,吾将上下而求索,有距,无惧。

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 222
码字总数 199010
作品 0
黄浦
私信 提问
Office 365 SharePoint 迁移浅谈 (三)使用SP Migration API迁移

下边开始进入正题,首先来谈谈如何使用SharePoint Migration API进行文档库的迁移。 操作说明之前先来说下SharePoint Migration API他的大概功能,本身SharePoint Migration API其实已经有不...

mxy00000
06/26
0
0
Linq 动态查询库

【原文地址】Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library) 【原文发表日期】 Monday, January 07, 2008 11:02 PM LINQ (语言级集成查询)是VS 2008 和 .NET 3.5中提供的一...

长平狐
2013/03/28
202
0
安装Office2007

这个是毫无疑问的需要安装,Shartpoint全称是Microsoft Office SharePoint Server 2007,所以又简称为MOSS,它是 2007 Microsoft Office system 的一部分。 Office SharePoint Server 2007 ...

彭博
2012/03/09
44
0
Office 365之SkyDrive Pro

随O365最新更新一起发布的SkyDrive Pro能够保证企业人员的本地文档和云端文档的同步,使得企业人员能够随时掌控最新信息。而这一强大工具的使用却非常简单,只需轻点鼠标就能完成。 首先,登...

loveunicom
2013/07/11
0
0
SharePoint中的Module

Module的作用是将解决方案中的文件部署到SharePoint Server的目录下,Module是 SharePoint 解决方案中的文件容器。 在部署解决方案时,模块中的文件将复制到 SharePoint Server 上的指定文件...

hxyhxl
2014/09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0029-如何实现CDH元数据库MySQL的主备

1.文档编写目的 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的扩展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负...

Hadoop实操
17分钟前
2
0
阿里如何做到百万量级硬件故障自愈?

摘要: 随着阿里大数据产品业务的增长,服务器数量不断增多,IT运维压力也成比例增大。各种软、硬件故障而造成的业务中断,成为稳定性影响的重要因素之一。本文详细解读阿里如何实现硬件故障...

阿里云官方博客
19分钟前
4
0
配置resttemplate

<bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder"factory-method="create"><property name="connectionManager"><bean class="org.apache.ht......

1713716445
22分钟前
0
0
Intersection of Two Linked Lists(leetcode160)

Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: A: a1 → a2 ......

woshixin
27分钟前
1
0
Jrebel最新激活破解方式(持续更新)

https://blog.csdn.net/xingbaozhen1210/article/details/81093041

glen_xu
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部