Существует ли API Sharepoint для одновременного получения всего содержимого файлов/папок для определенной папки? Я не хочу рекурсивно использовать GetFolderByServerRelativePath.
Если вы не хотите использовать GetFolderByServerRelativePath, вы можете использовать CSOM с запросом CAML следующим образом:
string password = "pwd";
string account = "[email protected]";
var secret = new SecureString();
foreach (char c in password)
{
secret.AppendChar(c);
}
using (ClientContext ctx = new ClientContext("https://Tenant.sharepoint.com/sites/sitename"))
{
ctx.Credentials = new SharePointOnlineCredentials(account,secret);
Web web = ctx.Web;
ctx.Load(web);
ctx.ExecuteQuery();
List list = web.Lists.GetByTitle("Documents");
ctx.Load(list);
ctx.ExecuteQuery();
Folder folder = web.GetFolderByServerRelativeUrl(web.ServerRelativeUrl + "/shared%20documents/");
ctx.Load(folder);
ctx.ExecuteQuery();
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
<Query>
</Query>
</View>";
camlQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
ListItemCollection listItems = list.GetItems(camlQuery);
ctx.Load(listItems);
ctx.ExecuteQuery();
foreach (var item in listItems)
{
Console.WriteLine(item.FieldValues["FileRef"].ToString());
}
}
вернет все папки/подпапки/файлы вместе, надеюсь, это то, что вам нужно.
Используйте запрос CAML camlQuery.ViewXml = @"<View Scope='RecursiveAll'> <Query> </Query> </View>"; Я обновлю ответ, пожалуйста, проверьте, для этого не нужно рекурсивно зацикливать подпапки.
@kartiksharma, вы пытались использовать CAML Query, как указано выше? Это сработало для вас?
Спасибо, Джерри. На самом деле я искал API, который будет просто возвращать контент либо во вложенном, либо в плоском формате. Я хочу избежать рекурсии, если это возможно.