使用AJAX获取OneDrive指定文件夹文件列表是否有通用请求URL?
OneDrive文件夹文件列表AJAX调用方案
你不需要强制使用官方picker组件,Microsoft Graph提供了可直接调用的通用REST接口来实现该需求,对应Google Drive的实现逻辑如下:
通用请求URL格式
请求地址为:https://graph.microsoft.com/v1.0/me/drive/items/{FOLDER_ID}/children
你可以按需追加查询参数调整返回结果:
- 加
$top=1000参数调整单页返回最大数量,上限为1000 - 加
$select=name,id,size,@microsoft.graph.downloadUrl参数仅返回需要的字段,减少响应体积
调用注意事项
- 该接口不支持JSONP,需要配置CORS后发送带授权头的AJAX请求,调用前需要先申请访问令牌:在Azure平台注册应用,申请
Files.Read或Files.Read.All权限后通过OAuth2流程获取Bearer令牌 - 如果要访问SharePoint/企业OneDrive下的文件夹,将请求前缀替换为
https://graph.microsoft.com/v1.0/sites/{站点ID}/drive/items/{FOLDER_ID}/children即可 - 单页返回结果超过限制时,响应体的
@odata.nextLink字段会返回下一页的请求地址,直接调用即可获取剩余文件
参考代码示例
const FOLDER_ID = "替换为你的文件夹ID"; const ACCESS_TOKEN = "替换为你获取到的Bearer访问令牌"; const url = `https://graph.microsoft.com/v1.0/me/drive/items/${FOLDER_ID}/children?$top=1000`; $.ajax({ url: url, headers: { "Authorization": `Bearer ${ACCESS_TOKEN}` }, dataType: "json" }).done(function(media) { // media.value就是文件列表数组 console.log(media.value); // 如果有下一页:media['@odata.nextLink'] }).fail(function(jqXHR, textStatus, errorThrown) { console.error("请求失败", textStatus, errorThrown); });
Picker组件适用场景
只有当你需要快速实现文件选择交互、不想自行处理OAuth授权流程的场景下才需要使用官方picker组件,纯数据查询场景直接调用Graph接口即可。
内容的提问来源于stack exchange,提问作者Toniq
相关产品推荐
相关产品推荐

