-
Client Object Model是SharePoint 2010对开发提供新的支持。我前两周在给一个客户做POC,主要内容是将SharePoint 2010 作为一个纯内容管理平台,并隐藏起来不给最终用户看到,最终用户通过原有平台进行文档的增删查改操作。这些都是用默认的认证方式,认证及权限代码没有包含在内。以下是我截取其中的一些代码。
return "Create Success";
}
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;
}
在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();
}
{
}
在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
UploadFileToDocumntLibra ry(
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 = GetListItemCollectionFro mSP(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
=
GetListItemCollectionFro mSP(siteURL, documentListName,
"
FileLeafRef
"
,
documentName,
"
Text
"
,
1
);
return
(listItems
!=
null
&&
listItems.Count
==
1
)
?
listItems[
0
] :
null
;
}
private ListItemCollection GetListItemCollectionFro mSP(
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 GetListItemCollectionFro mSP(
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
{
}
private
{
}
private
{
}
还有一个支持类
[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
; }
}
public
{
}
标签:
SharePoint 2010