In this blog I’ll display how to
- Get ListItemCollection from SharePoint document list using CAML
- Upload a document to SharePoint Document list
- Download a document from SharePoint Document list
Get ListItemCollection from SharePoint Document list using CAML:
I can get the ListItemCollection as displayed in code snippets below
ListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1);
name – Name of the FieldRef, value = value to match for that FieldRef, type – Type of the value and rowLimit – Maximum number of rows to fetch
private static ListItemCollection GetListItemCollectionFromSP(string name, string value, string type, int rowLimit)
{//Replace siteURL and documentListName with your SharePoint site URL and DocumentList
ListItemCollection listItems = null; string siteURL = "site URL";string documentListName = "document list";
using (ClientContext clientContext = new ClientContext(siteURL))
{List documentsList = clientContext.Web.Lists.GetByTitle(documentListName);
CamlQuery camlQuery = new CamlQuery(); ;camlQuery.ViewXml =
@"<View><Query>
<Where>
<Eq>
<FieldRef Name='" + name + @"'/><Value Type='" + type + "'>" + value + @"</Value>
</Eq>
</Where>
<RowLimit>" + rowLimit.ToString() + @"</RowLimit></Query>
</View>";
listItems = documentsList.GetItems(camlQuery);
clientContext.Load(documentsList);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
}
return listItems;}
Upload a document to SharePoint Document List:
In this case I want to upload a document to SharePoint document list and also update the field metadata i.e. for field “DocType” to “Favourites” as in this example using ClientContext. The code snippet is displayed belowpublic void UploadDocument(string siteURL, string documentListName,
string documentListURL, string documentName,
byte[] documentStream){using (ClientContext clientContext = new ClientContext(siteURL))
{ //Get Document ListList documentsList = clientContext.Web.Lists.GetByTitle(documentListName);
var fileCreationInformation = new FileCreationInformation();//Assign to content byte[] i.e. documentStreamfileCreationInformation.Content = documentStream;
//Allow owerwrite of documentfileCreationInformation.Overwrite = true;//Upload URLfileCreationInformation.Url = siteURL + documentListURL + documentName;
Microsoft.SharePoint.Client.File uploadFile = documentsList.RootFolder.Files.Add(fileCreationInformation);
//Update the metadata for a field having name "DocType"uploadFile.ListItemAllFields["DocType"] = "Favourites";
uploadFile.ListItemAllFields.Update();
clientContext.ExecuteQuery();
}
}
Download a document from SharePoint Document List:
I can download the document using the code snippets displayed belowpublic Stream DownloadDocument(string siteURL, string documentName)
{ListItem item = GetDocumentFromSP(documentName);
if (item != null)
{using (ClientContext clientContext = new ClientContext(siteURL))
{FileInformation fInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, item ["FileRef"].ToString()); return fInfo.Stream;}
}
return null;
}
private static ListItem GetDocumentFromSP(string documentName)
{//This method is discussed above i.e. Get List Item Collection from SharePoint Document ListListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1);
return (listItems != null && listItems.Count == 1) ? listItems[0] : null;
}
great work Atul
ReplyDeleteNice share Atul !! Keep it up !!
ReplyDeleteI am using same code for download but download not working
ReplyDelete