Box.com Search API检索确定的文件夹中的所有文件

问题描述 投票:5回答:2

我正在寻找一种获取特定文件夹的所有文件的方法。

但是我在official documentation中找不到足够的信息

我考虑这样的事情:(我还想用access_token设置自定义标头)

https://api.box.com/2.0/search?query=*

这种方式行不通,而且我认为查询不接受正则表达式...

任何想法?


PS:一个真实的用例将有助于理解这个问题:

我的文件夹:

folderOne:
 |
 |_file1.jpg
 |
 |_file2.doc
 |
 |_folder1
 | |_file3.jpg
 | |_folder2
 |
 |_file4.pdf

对于搜索请求,我希望仅获得file1.jpgfile2.docfile4.pdf

search box-api
2个回答
6
投票

您可以通过查询文件夹的内容,然后在客户端过滤file项来轻松完成此操作。

curl https://api.box.com/2.0/folders/FOLDER_ID/items \
-H "Authorization: Bearer ACCESS_TOKEN"

这将返回一个项目集合,您可以从中选择typefile的项目。

{
  "total_count": 4,
  "entries": [
     {
        "type": "folder",
        "id": "192429928",
        "name": "folder1"
     },
     {
        "type": "file",
        "id": "818853862",
        "name": "file1.jpg"
     },
     {
        "type": "file",
        "id": "818853843",
        "name": "file2.doc"
     },
     {
        "type": "file",
        "id": "818853832",
        "name": "file4.pdf"
     }
  ]
}

分页

Box将在所有文件元数据之前返回所有文件夹元数据。您可以对这些文件夹进行计数,以确定仅文件分页的适当偏移量。例如,如果您的Box文件夹有13个子文件夹,并且您想一次分页25个文件:

/folders/FOLDER_ID/items?limit=25&offset=13
/folders/FOLDER_ID/items?limit=25&offset=38
/folders/FOLDER_ID/items?limit=25&offset=63
/folders/FOLDER_ID/items?limit=25&offset=...

0
投票

我和OP都存在一个相同的问题,即检索所有文件,而我最初想到的唯一解决方案是解析所有文件夹(包括子文件夹,子子文件夹等),这是一个非常繁琐的任务。这种蛮力方法的另一个问题是Box的查询限制为每位用户每分钟每分钟1000个API请求,因此查询整个文件夹树是不可行的。

使用Search API是一个好主意,但是,使用Box API使用空白查询或星号进行搜索将不起作用。幸运的是,我需要的文件都是pdf格式,因此我没有搜索特定的文件名,而是查询了“ pdf”。这将返回给我该用户帐户中包含的所有PDF。我还添加了type=file,以过滤出其文件夹名称中可能包含单词“ pdf”的所有文件夹。这是我的整个查询:

https://api.box.com/2.0/search?query=pdf&type=file&offset=0&limit=100

我出于offset的目的添加了limitpagination参数。

© www.soinside.com 2019 - 2024. All rights reserved.