【问题标题】:Find a list of Files using Sharepoint REST API使用 Sharepoint REST API 查找文件列表
【发布时间】:2019-06-02 10:55:33
【问题描述】:

这似乎是一个冷漠的问题,我无法在包括这里在内的任何地方找到,所以我将再次尝试看看是否有人有解决方案。我有一个 SharePoint 2013 实例,我使用 REST API 进行内容搜索并返回到我的 React 前端进行显示。这很好用。但是,当我只需要在整个站点中搜索特定文档列表而不仅仅是在目录或特定列表中时,我现在遇到了问题。我可以使用 /_api/search/query?queryText="" 进行内容搜索就好了,但我想构造这个 API 端点的查询文本,只在我提供的列表中搜索文档。

例如,如果我要查找三个文档:

  1. Foo.txt
  2. 酒吧.doc
  3. Foobar.pdf

我只想要这些文档和相应的数据(例如我使用搜索 api 获得的 RedirectEmbedURL 等)而不是 /_api/web/lists/getByTitle 方法。

有没有办法格式化查询字符串以仅返回特定文件?

谢谢。

【问题讨论】:

    标签: sharepoint-2013 sharepoint-rest-api


    【解决方案1】:

    要检索列表,您需要知道站点路径和库名称。

    您还需要运算符来使用过滤器

    Operators

    检索列表中的所有文件: https:////_api/Web/Lists/GetByTitle('')/Items?$expand=File

    例子:

    https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File
    

    以下是一些过滤器示例

    按名称过滤,您需要展开“FieldValuesAsText”并按属性“FileLeafRef”进行过滤 此处示例:

    https://[site]/web/Lists/GetByTitle('[library_name]')/Items?$filter=substringof('[TEXT_TO_SEARCH]',Title) or substringof('[TEXT_TO_SEARCH]',FileLeafRef)&$expand=File,FieldValuesAsText
    

    我也按标题过滤,因为我不知道用户是否需要标题或带有扩展名的名称。

    过滤器开始于

    https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File&$filter=startswith(Title,'Foo')
    

    过滤“包含”(substringof)

    https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File&$filter=substringof('T15', Title)
    

    过滤“使用相关键搜索(本例中为 ex1)”:(substringof)

    https://domain-example.com/sites/site1/site2/etc/_api/Web/lists/GetByTitle('listtitle')/Items?$expand=FieldValuesAsText&$filter=substringof('BES10GHC10BB001', ex1)
    

    感谢阅读!

    【讨论】:

    • 这是我最终想出的仅搜索标题的方法:https://[sharepoint site]/_api/search/query?querytext='*'&rowlimit=10&refinementfilters='Title:or ("40c91e71-d3b6-4b23-b034-50f6dca76649"%2c"eb5d0a99-d619-411d-9b0e-abcd5430d7da")'&clienttype='ContentSearchRegular' 我现在输入需要获取所需数据的 Select 属性。我被困在细化过滤器上,并试图使用它们来获取标题。
    • @john 我想在站点内的库中通过键“名称”查找文件,但我不知道该怎么做,我试过:“https://[sharepoint site]/_api/web/Lists/GetByTitle([LIBNAME]')/Items?$expand=File&$filter=substringof('filename.doc', File/Name)" 但是我收到了列“文件”不存在。 :(
    • @john 找到它,更新答案
    【解决方案2】:

    我只是使用:

    https://<domain>/sites/<list-title>/_api/files
    

    它包括 Url、Name 和“childrenCount”来过滤文件夹。

    您可以在请求中使用逻辑进行过滤。

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2019-06-06
      • 2016-04-15
      • 1970-01-01
      相关资源
      最近更新 更多