如何通过SharePoint REST API使用Postman自动下载文件?调用API返回JSON未触发本地自动下载的问题求助
我来帮你梳理下解决思路哈——你当前调用的接口其实只是获取文件的元数据列表,并不是直接请求文件内容,所以自然不会自动下载到本地。下面一步步教你怎么实现下载:
1. 先搞懂当前接口的作用
你调用的 https://xyz.sharepoint.com/sites/YYYFILES/_api/Web/GetFolderByServerRelativeUrl('test_library/lib')/Files 这个接口,返回的是文件夹里所有文件的属性信息(比如文件名、路径、大小这些),并没有返回文件的实际内容。所以要下载文件,得基于这些元数据再发请求。
2. 单个CSV文件的下载步骤
从你拿到的JSON响应里,找到要下载的CSV文件对象,它里面有两个关键字段可以用来构造下载请求:
ServerRelativeUrl:文件的相对路径,比如test_library/lib/xxx.csv@odata.mediaEditLink:直接指向文件内容的API地址(这个更省心,直接用就行)
操作步骤:
- 在Postman里新建一个GET请求,把URL改成:
或者直接用https://xyz.sharepoint.com/sites/YYYFILES/_api/Web/GetFileByServerRelativeUrl('{文件的ServerRelativeUrl}')/$value@odata.mediaEditLink的完整值,比如https://xyz.sharepoint.com/sites/YYYFILES/_api/Web/GetFileByServerRelativeUrl('test_library/lib/xxx.csv')/$value - 把之前用的Access Token(
Authorization: Bearer {你的token})加到请求头里 - 发送请求后,Postman的响应面板会显示CSV的内容,此时点击面板右上角的「Save Response」按钮,选择保存为
.csv格式,就能存到本地了。
3. 批量下载所有CSV文件(Postman脚本实现)
如果文件夹里有很多CSV,手动一个个下载太麻烦,可以用Postman的Test脚本配合Newman命令行工具实现批量下载:
步骤1:在获取文件列表的请求里加Test脚本
打开你原来调用文件列表的请求,切换到「Tests」标签,粘贴下面的脚本:
// 从响应中提取所有文件列表 const allFiles = pm.response.json().value; // 筛选出后缀为.csv的文件 const csvFiles = allFiles.filter(file => file.Name.endsWith('.csv')); // 遍历每个CSV文件,发送下载请求 csvFiles.forEach(file => { // 构造下载接口URL const downloadUrl = `https://xyz.sharepoint.com/sites/YYYFILES/_api/Web/GetFileByServerRelativeUrl('${file.ServerRelativeUrl}')/$value`; pm.sendRequest({ url: downloadUrl, method: 'GET', header: { // 复用当前请求的Authorization头 'Authorization': pm.request.headers.get('Authorization') }, responseType: 'blob' // 指定返回二进制内容 }, (err, res) => { if (!err) { // 注意:这段写文件的代码需要用Newman运行才能生效(Postman UI里不支持直接写本地文件) const fs = require('fs'); // 把文件保存到当前目录,文件名用文件的原始名称 fs.writeFileSync(`./${file.Name}`, res.stream); console.log(`✅ 已成功保存文件: ${file.Name}`); } else { console.error(`❌ 下载文件失败: ${file.Name},错误信息: ${err.message}`); } }); });
步骤2:用Newman运行脚本
因为Postman的UI环境不允许脚本直接写入本地文件,所以需要用Newman(Postman的命令行工具)来执行:
- 先安装Node.js,然后用npm安装Newman:
npm install -g newman - 把你的Postman集合和环境变量导出为JSON文件
- 在命令行里执行:
执行完成后,所有CSV文件就会自动保存到当前命令行所在的目录下。newman run 你的集合文件名.json -e 你的环境变量文件名.json
一些注意事项
- 确保你的Access Token有读取该文档库的权限,如果权限不够会返回403错误
- 如果下载时返回的是乱码,可以在请求头里加上
Accept: application/octet-stream,强制返回二进制内容 - 对于超大CSV文件,可能需要考虑分片下载,但一般普通CSV文件直接用上面的方法就足够了
内容的提问来源于stack exchange,提问作者Ram Kashyap




