码迷,mamicode.com
首页 > Web开发 > 详细

Sharepoint客户端对象模型上传附件

时间:2014-10-20 11:29:03      阅读:497      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   http   color   io   os   ar   for   

Sharepoint2010中引入了客户端对象模型(COM) 来加强外部对sharepoint站点信息的访问(sharepoint2007只能通过web service)

SharePoint中有3种客户端对象模型:

  • ECMAScript
  • .NET托管客户端对象模型
  • Silverlight客户端对象模型

3种客户端对象模型都通过Client.svc来实现与服务器的交互,对于COM在此不做详细的说明,本节的学习目标是:通过客户端对象模型上传附件

在sharepoint常用于存储附件的容器有:LibraryList,在List中实现存储附件要先启动该功能。

  • List Setting-->Advanced settings-->Attachment Enabled

bubuko.com,布布扣

bubuko.com,布布扣

  • 新建一个控制台/winform程序
  • 添加对Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll引用

bubuko.com,布布扣

  • 上传附件
      using (var clientContext = new ClientContext(url))
            {
                clientContext.Credentials = creds;

                using (var fs = new FileStream(fileName, FileMode.Open))
                {
                    var fi = new FileInfo(fileName);
                    var list = clientContext.Web.Lists.GetByTitle(listTitle);
                    clientContext.Load(list.RootFolder);
                    clientContext.ExecuteQuery();
            //上传附件到List
                    string attachmentUrl = list.RootFolder.ServerRelativeUrl + "/Attachments/" + itemId.ToString() + "/" + fi.Name;
            //上传附件到Library            
            string attachmentUrl = list.RootFolder.ServerRelativeUrl + "/" + fi.Name;
            Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, attachmentUrl, fs, true); 
          }        }

 备注:上面的代码上传附件到Library和List(已经存在/attachments/ItemId/ folder)没有任何问题,但是如果上传附件到一条新的List Item就会报409服务器拒绝的错误

原因是因为新的List Item并不存在/Attachments/ItemId 这样的folder,解决方法是通过web service 来实现附件的上传。

  • web service上传附件
       var soapClient = new ListsService.Lists();
            soapClient.Credentials = creds;
            soapClient.Url = ctx.Web.Context.Url + "/_vti_bin/Lists.asmx";
            return soapClient.AddAttachment(listName, itemId, Path.GetFileName(fileName),System.IO.File.ReadAllBytes(fileName));

 

总结:本节讲述了如何通过COM上传附件,同时也提供另外一种上传附件的方法(web service).

 

Sharepoint客户端对象模型上传附件

标签:winform   style   blog   http   color   io   os   ar   for   

原文地址:http://www.cnblogs.com/splearning/p/4036637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!