如何使用 REST API 和 CURL 将文件上传到 SharePoint Online

问题描述 投票:0回答:2

我一直在梳理 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 服务器本身上传我的文件

linux curl http-post sharepoint-online sharepoint-rest-api
2个回答
0
投票

您可以尝试使用图形 API 上传文件 到 SharePoint Online。

PUT /sites/{site-id}/drive/items/{parent-id}:/{filename}:/content
Content-Type: text/plain

The contents of the file goes here.

0
投票

我发现我使用的 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"

© www.soinside.com 2019 - 2024. All rights reserved.