SharePoint Web服务:测试文件是否存在

时间:2009-02-24 21:05:09

标签: web-services sharepoint

我在C#中使用SharePoint Web服务。我的代码正在检查文件并使用列表Web服务检查它们。我需要测试一下文件是否存在;我可以使用对象模型API找到很多这样做的示例,但我似乎无法使用Web服务找到一种直接的方法。

3 个答案:

答案 0 :(得分:3)

使用合适的CAML查询尝试Lists.GetListItems

这样的CAML查询
<Query><Where><Eq><FieldRef Name="FileLeafRef" /><Value Type="Text">Filename.rtf</Value></Eq></Where></Query>

应该工作;字段'FileLeafRef'是存储文件名的地方。

答案 1 :(得分:0)

这段代码可能有用,但有点粗略,但演示了如何根据标题获取文件列表。

        public static bool PageExists(string listName, string webPath, string pageTitle)
        {
            string pageId = "";
            IntranetLists.Lists lists = new IntranetLists.Lists();
            lists.UseDefaultCredentials = true;
            lists.Url = webPath + "/_vti_bin/lists.asmx";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<Document><Query><Where><Contains><FieldRef Name=\"Title\" /><Value Type=\"Text\">" + pageTitle + "</Value></Contains></Where></Query><ViewFields /><QueryOptions /></Document>");
            XmlNode listQuery = doc.SelectSingleNode("//Query");
            XmlNode listViewFields = doc.SelectSingleNode("//ViewFields");
            XmlNode listQueryOptions = doc.SelectSingleNode("//QueryOptions");

            Guid g = GetWebID(webPath);

            XmlNode items = lists.GetListItems(listName, string.Empty, listQuery, listViewFields, string.Empty, listQueryOptions, g.ToString());

            }
            return items.Count > 0;            
        }

        public static XmlNodeList XpathQuery(XmlNode xmlToQuery, string xPathQuery)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlToQuery.OuterXml);
            XmlNamespaceManager mg = new XmlNamespaceManager(doc.NameTable);
            mg.AddNamespace("sp", "http://schemas.microsoft.com/sharepoint/soap/");
            mg.AddNamespace("z", "#RowsetSchema");                                   
            mg.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
            mg.AddNamespace("y", "http://schemas.microsoft.com/sharepoint/soap/ois");
            mg.AddNamespace("w", "http://schemas.microsoft.com/WebPart/v2");
            mg.AddNamespace("d", "http://schemas.microsoft.com/sharepoint/soap/directory");
            return doc.SelectNodes(xPathQuery, mg);
        }

答案 2 :(得分:0)

我也遇到过类似的问题。 我尝试了以下FieldRef但没有成功:“Name”,“FileLeafRef”和“LinkFilenameNoMenu”。

位于http://www.johanolivier.blogspot.com的帖子详细说明了我必须做些什么才能让它发挥作用。