使用SharePoint 2010 客…

来源:互联网 发布:淘宝店卖家页面图片 编辑:程序博客网 时间:2024/04/30 11:59
  Client ObjectModel是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 "CreateSuccess";       
}
复制代码

 

在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;
}
复制代码

 

上面方法调用的方法

复制代码
// Codeby 丁为平
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[0null;

}

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 getset}
    
public string FilePath getset}
    
public DateTime CreatedDate getset}
    
public DateTime ModifiedDate getset}
    
public string Author getset}
    
public string Editor getset}
    
public string Type getset   
}
复制代码

 

分类: .Net技术, SharePoint2010
标签: SharePoint2010
0 0
原创粉丝点击