我一直在梳理 Microsoft 关于 REST API 的文档,以操作 SharePoint Online 文档树中的文件。我快找到解决方案了,但遇到了问题。
我在 Linux 服务器上运行 CURL 命令。在 Linux 的 /tmp 目录中,我有一个文件“a.txt”。我可以使用 CURL 在 SharePoint online 上创建一个新文件,但我无法使用相同的命令上传现有文件。
当我指定“Content-Length: 0”时,此命令成功地在我们的 SharePoint 上创建了一个新文件
curl -X POST -i -H "Authorization: Bearer tokenabc" -H "Content-Length: 0" -s "https://tenant.sharepoint.com/teams/testSite/_api/web/GetFolderByServerRelativeUrl('%20Shared%20Documents')/Files/add(url='a.txt',overwrite=true)"
但是当我尝试从 /tmp 目录实际上传我的文件时(我在 /tmp 目录中运行 CURL 命令,我更改了“Content-Length:4000”),我没有得到任何响应,也没有创建文件。
curl -X POST -i -H "Authorization: Bearer tokenabc" -H "Content-Length: 4000" -s "https://tenant.sharepoint.com/teams/testSite/_api/web/GetFolderByServerRelativeUrl('%20Shared%20Documents')/Files/add(url='a.txt',overwrite=true)"
我似乎无法弄清楚如何使用此 CURL REST API 命令从 Linux 服务器本身上传我的文件
您可以尝试使用图形 API 上传文件 到 SharePoint Online。
PUT /sites/{site-id}/drive/items/{parent-id}:/{filename}:/content
Content-Type: text/plain
The contents of the file goes here.
我发现我使用的 CURL 命令有误,我需要使用 -F 选项来指定我使用的是机器上的实际文件。
一旦我包含了 -F 选项,它就起作用了
curl -F "[email protected]" "https://tenant.sharepoint.com/teams/testSite/_api/web/GetFolderByServerRelativeUrl('%20Shared%20Documents')/Files/add(url='a. txt',overwrite=true)" -H "Authorization: Bearer $(cat token.txt)" -H "accept: application/json"