我正在寻找一种获取特定文件夹的所有文件的方法。
但是我在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.jpg
,file2.doc
和file4.pdf
。
您可以通过查询文件夹的内容,然后在客户端过滤file
项来轻松完成此操作。
curl https://api.box.com/2.0/folders/FOLDER_ID/items \
-H "Authorization: Bearer ACCESS_TOKEN"
这将返回一个项目集合,您可以从中选择type
为file
的项目。
{
"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=...
我和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
的目的添加了limit
和pagination参数。