使用SharePoint 2010 客…

  Client Object Model是SharePoint 2010对开发提供新的支持。我前两周在给一个客户做POC,主要内容是将SharePoint 2010 作为一个纯内容管理平台,并隐藏起来不给最终用户看到,最终用户通过原有平台进行文档的增删查改操作。这些都是用默认的认证方式,认证及权限代码没有包含在内。以下是我截取其中的一些代码。

在SharePoint 2010 中创建文档库 

public   string  CreateDocumentLibrary( string  siteUrl,  string  DocumentLibraryName, string  userName)
{
    ListCreationInformation newListInfo 
=   new  ListCreationInformation();
    newListInfo.Title 
=  DocumentLibraryName;
    newListInfo.TemplateType 
=  ( int )ListTemplateType.DocumentLibrary;
    List newList;
    
using  (ClientContext clientContext  =   new  ClientContext(siteUrl))
    {
        clientContext.Credentials 
=  System.Net.CredentialCache.DefaultCredentials;
        Web site 
=  clientContext.Web;
        newList 
=  site.Lists.Add(newListInfo);            
        clientContext.Load(newList);
        clientContext.ExecuteQuery();
    }
    return "Create Success";       
}

 

在SharePoint 2010 中删除文档库

public   string  DeleteDocumentLibrary( string  siteUrl,  string  DocumentLibraryName)
{
    
using  (ClientContext clientContext  =   new  ClientContext(siteUrl))
    {
        clientContext.Credentials 
=  System.Net.CredentialCache.DefaultCredentials;
        Web site 
=  clientContext.Web;
        List existList 
=  site.Lists.GetByTitle(DocumentLibraryName);
        existList.DeleteObject();
        clientContext.ExecuteQuery();
        clientContext.Dispose();
    }
    
return   " Delete Success " ;
}

 

在SharePoint 2010 中上传文档

public   string  UploadFileToDocumntLibrary( string  siteUrl,  string  documentListName,  string  documentListURL,  string  documentName,  byte [] documentStream)
{
    
using  (ClientContext clientContext  =   new  ClientContext(siteUrl))
    {
        clientContext.Credentials 
=  System.Net.CredentialCache.DefaultCredentials;
        List documentsList 
=  clientContext.Web.Lists.GetByTitle(documentListName);
        var fileCreationInformation 
=   new  FileCreationInformation();
        fileCreationInformation.Content 
=  documentStream;
        fileCreationInformation.Overwrite 
=   true ;
        fileCreationInformation.Url 
=  siteUrl +  documentListURL + " / "   +  documentName;
        Microsoft.SharePoint.Client.File uploadFile 
=  documentsList.RootFolder.Files.Add(fileCreationInformation);
        uploadFile.ListItemAllFields.Update();
        clientContext.ExecuteQuery();
    }
    
return   " upload success " ;
}

 

在SharePoint 2010 中下载文档 

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

 

在SharePoint 2010 中获取文档库中的文档

public  List <</span>SharePointListItem> GetListItemCollection(string siteURL, string documentListName)
{
    ListItemCollection listItems 
= GetListItemCollectionFromSP(siteURL, documentListName,20);
    List
<</span>SharePointListItem> lireturn = new List<</span>SharePointListItem>();
    
foreach (ListItem li in listItems)
    {
        SharePointListItem item 
= new SharePointListItem();
        item.Type 
= li.FileSystemObjectType.ToString();
        item.DisplayName 
= li.FieldValues["FileLeafRef"].ToString();
        item.FilePath 
= li.FieldValues["FileRef"].ToString();
        item.CreatedDate 
=(DateTime)li.FieldValues["Created"];
        item.ModifiedDate 
=(DateTime)li.FieldValues["Modified"];
        item.Author 
= ((Microsoft.SharePoint.Client.FieldUserValue)li.FieldValues["Author"]).LookupValue;
        item.Editor
=((Microsoft.SharePoint.Client.FieldUserValue)li.FieldValues["Editor"]).LookupValue;
        lireturn.Add(item);
    }
    
return lireturn;
}

 

上面方法调用的方法

// Code by 丁为平
private  ListItem GetDocumentFromSP( string  siteURL,  string  documentListName,  string  documentName)
{
    ListItemCollection listItems 
=  GetListItemCollectionFromSP(siteURL, documentListName,  " FileLeafRef " ,
            documentName, 
" Text " 1 );
    
return  (listItems  !=   null   &&  listItems.Count  ==   1 ?  listItems[ 0 null ;

}

private  ListItemCollection GetListItemCollectionFromSP( string  siteURL,  string  documentListName,  int  rowLimit)
{
    ListItemCollection listItems 
=   null ;
    
using  (ClientContext clientContext  =   new  ClientContext(siteURL))
    {
        clientContext.Credentials 
=  System.Net.CredentialCache.DefaultCredentials;    
        List documentsList  =  clientContext.Web.Lists.GetByTitle(documentListName);
        CamlQuery camlQuery 
=   new  CamlQuery();             
        camlQuery.ViewXml 
=
            
@"
                                  
                
"   +  rowLimit.ToString()  +   @"
                
              
" ;
        listItems 
=  documentsList.GetItems(camlQuery);
        clientContext.Load(documentsList);
        clientContext.Load(listItems);
        clientContext.ExecuteQuery();
    }
    
return  listItems;


private  ListItemCollection GetListItemCollectionFromSP( string  siteURL,  string  documentListName,  string  name,  string  value,  string  type,  int  rowLimit)
{
    ListItemCollection listItems 
=   null ;
    
using  (ClientContext clientContext  =   new  ClientContext(siteURL))
    {
        clientContext.Credentials 
=  System.Net.CredentialCache.DefaultCredentials;
        List documentsList 
=  clientContext.Web.Lists.GetByTitle(documentListName);
        CamlQuery camlQuery 
=   new  CamlQuery(); 
        camlQuery.ViewXml 
=
            
@"
                
                
                
                
"   +  name  +   @" '/>
                
"   +  type  +   " '> "   +  value  +   @"
                                                           
                
"   +  rowLimit.ToString()  +   @"
                
                
" ;
        listItems 
=  documentsList.GetItems(camlQuery);
        clientContext.Load(documentsList);
        clientContext.Load(listItems);
        clientContext.ExecuteQuery();
    }
    
return  listItems;
}

private   byte [] ReadFully(Stream stream,  int  initialLength)
{
    
//  If we've been passed an unhelpful initial length, just
    
//  use 32K.
     if  (initialLength  <</span> 1)
    {
        initialLength 
= 32768;
    }
    
byte[] buffer = new byte[initialLength];
    
int read = 0;
    
int chunk;
    
while ((chunk = stream.Read(buffer, read, buffer.Length - read)) > 0)
    {
        read 
+= chunk;
        
// If we've reached the end of our buffer, check to see if there's
        
// any more information
        if (read == buffer.Length)
        {
            
int nextByte = stream.ReadByte();
            
// End of stream? If so, we're done
            if (nextByte == -1)
            {
                
return buffer;
            }
            
byte[] newBuffer = new byte[buffer.Length * 2];
            Array.Copy(buffer, newBuffer, buffer.Length);
            newBuffer[read] 
= (byte)nextByte;
            buffer 
= newBuffer;
            read
++;
        }
    }
    
byte[] ret = new byte[read];
    Array.Copy(buffer, ret, read);
    
return ret;
}

 

还有一个支持类

[Serializable]
public   class  SharePointListItem
   
    
public  SharePointListItem()
    {
    }
    
public   string  DisplayName  get set }
    
public   string  FilePath  get set }
    
public  DateTime CreatedDate  get set }
    
public  DateTime ModifiedDate  get set }
    
public   string  Author  get set }
    
public   string  Editor  get set }
    
public   string  Type  get set    
}

 

标签:  SharePoint 2010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值