Below is the C# function to call the lists.asmx MOSS Web Service to download the documents from a document library.
Add reference to lists.asmx to your project and use the following code:
private void DownloadDocumnts(string strListName)
{
try
{
#region Connect to URL
this.m_objWSSListService.Url = this.cmbURL.Text.Trim('/') + "/_vti_bin/lists.asmx";
string sDomain = string.Empty;
string sUserName = this.txtLogin.Text.Trim();
if (sUserName.IndexOf("\\") > 0)
{
sDomain = sUserName.Split("\\".ToCharArray())[0];
sUserName = sUserName.Split("\\".ToCharArray())[1];
}
this.m_objWSSListService.Credentials = new System.Net.NetworkCredential(sUserName, this.txtPassword.Text.Trim(), sDomain);
#endregion
string sListName = strListName;
string SourceDocumentURL = "";
string strTempLocation = "C:\\Temp\\";
string strFileName = "";
System.Xml.XmlNode xnListSchema = m_objWSSListService.GetList(sListName);
//get the Data from the List
System.Xml.XmlDocument xdListData = new System.Xml.XmlDocument();
System.Xml.XmlNode xnQuery = xdListData.CreateElement("Query");
System.Xml.XmlNode xnViewFields = xdListData.CreateElement("ViewFields");
System.Xml.XmlNode xnQueryOptions = xdListData.CreateElement("QueryOptions");
System.Xml.XmlNode xnListData = m_objWSSListService.GetListItems(sListName, null, xnQuery, xnViewFields, null, xnQueryOptions);
if (!Directory.Exists(strTempLocation))
{
Directory.CreateDirectory(strTempLocation);
}
foreach (XmlNode outerNode in xnListData.ChildNodes)
{
if (outerNode.NodeType.Equals(System.Xml.XmlNodeType.Element))
{
foreach (XmlNode node in outerNode.ChildNodes)
{
if (node.NodeType.Equals(System.Xml.XmlNodeType.Element))
{
XmlNode FileNameNode = node.Attributes.GetNamedItem("ows_EncodedAbsUrl");
SourceDocumentURL = FileNameNode.InnerText;
strFileName = SourceDocumentURL.Substring(SourceDocumentURL.LastIndexOf('/') + 1).Replace("%20", " ");
/*
* ?noredirect=true
* will not open the file in default program (e.g. XSN for InfoPath), instead it will download the file
*
* */
System.Net.WebClient objWebClient = new System.Net.WebClient();
objWebClient.Credentials = CredentialCache.DefaultCredentials;
objWebClient.DownloadFile(SourceDocumentURL + "?noredirect=true" ,strTempLocation + strFileName);
this.WriteLog("File Downloaded: " + SourceDocumentURL);
}
}
}
}
}
catch (System.Exception ex)
{
this.WriteLog(ex.ToString());
}
}
No comments:
Post a Comment