我正在搜索获取特定文件夹的所有文件的方法。
中找到足够的信息我想到这样的事情:(我还假设用access_token设置一个自定义标题)
https://api.box.com/2.0/search?query=*
这种方式不起作用,我认为查询不接受正则表达式...
有什么想法吗?
我的文件夹:
folderOne:
|
|_file1.jpg
|
|_file2.doc
|
|_folder1
| |_file3.jpg
| |_folder2
|
|_file4.pdf
根据搜索请求,我希望只获得file1.jpg
,file2.doc
和file4.pdf
。
答案 0 :(得分:5)
您可以通过查询文件夹的内容然后在客户端过滤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=...
答案 1 :(得分:0)
我有一个与OP相同的问题,那就是检索所有文件,而我最初想到的唯一解决方案是解析所有文件夹(包括子文件夹,子子文件夹等),这是一个非常繁琐的任务。这种蛮力方法的另一个问题是Box的查询限制为每位用户每分钟每分钟1000个API请求,因此查询整个文件夹树是不可行的。
使用Search API是一个好主意,但是,使用Box API使用空白查询或星号进行搜索将不起作用。幸运的是,我需要的文件都是pdf格式,因此我没有搜索特定的文件名,而是查询了“ pdf”。这将返回给我该用户帐户中包含的所有PDF。我还添加了<a href="microsoft-edge:https://research.google.com/pubs/archive/44678.pdf">Link</a>
,以过滤出其文件夹名称中可能包含单词“ pdf”的所有文件夹。这是我的整个查询:
type=file
出于pagination的目的,我添加了https://api.box.com/2.0/search?query=pdf&type=file&offset=0&limit=100
和offset
参数。