新 OneDrive 上的复制操作 API
Copy operation on new OneDrive API
我在这个问题上纠结了一段时间。我正在尝试将位于 OneDrive 文件夹中的文件复制到同一帐户中的另一个文件夹中。 (即:从用户的根文件夹到它的子文件夹之一)。
根据 OneDrive Copy API,我需要调用此 REST API:
POST /drive/items/{item-id}/action.copy
其中 {item-id}
是我要复制的文件的 ID。对于此请求,我使用了以下内容:
{
"parentReference": {
"id": [destination-folder-id]
}
}
这个 http 调用工作正常。我得到了想要的结果:
HTTP/1.1 202 Accepted
Location: https://onedrive.com/monitor/[generated-alphanumeric-characters]
当我在 Location
header 关注 link 时,我得到的异步作业状态是:
{
"operation": "ItemCopy",
"percentageComplete": 0,
"status": "notStarted",
"statusDescription": "Completed 0/0 files; 0/0 bytes"
}
问题是,无论我等待并调用这个 link 多少次,它都会给出准确的响应,status
是 notStarted
。我还尝试使用 OneDrive's API Console 重现它,它显示了确切的行为。复制空文件夹时我没有任何问题。此问题仅发生在文件上。有谁知道为什么?我应该做些什么来开始那个异步作业?
好像没有人知道这个问题。现在,我必须使用旧的 OneDrive API(以前的 SkyDrive API)来进行复制操作,就像这个例子:
COPY https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!126
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"destination": "folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!114"
}
档案后的东西。和文件夹。是用户 ID 后跟项目 ID(file id
表示项目或 folder id
表示目的地)。请注意,这仅适用于文件。不能复制文件夹。如果成功,它将 return 状态码 Created
.
哦,还有......为了使用这个API,我们需要在验证我们的应用程序时在范围内有wl.skydrive_update
。
我不会将此答案标记为已接受的答案,因为这只是此问题的解决方法。它并没有解决真正的问题。
4 月 12 日更新:
行。根据 this bug tracking,这个 API 现在应该可以工作了(引用的评论是在 4 月 10 日发布的。所以我会把这个问题标记为已回答。
我在这个问题上纠结了一段时间。我正在尝试将位于 OneDrive 文件夹中的文件复制到同一帐户中的另一个文件夹中。 (即:从用户的根文件夹到它的子文件夹之一)。
根据 OneDrive Copy API,我需要调用此 REST API:
POST /drive/items/{item-id}/action.copy
其中 {item-id}
是我要复制的文件的 ID。对于此请求,我使用了以下内容:
{
"parentReference": {
"id": [destination-folder-id]
}
}
这个 http 调用工作正常。我得到了想要的结果:
HTTP/1.1 202 Accepted
Location: https://onedrive.com/monitor/[generated-alphanumeric-characters]
当我在 Location
header 关注 link 时,我得到的异步作业状态是:
{
"operation": "ItemCopy",
"percentageComplete": 0,
"status": "notStarted",
"statusDescription": "Completed 0/0 files; 0/0 bytes"
}
问题是,无论我等待并调用这个 link 多少次,它都会给出准确的响应,status
是 notStarted
。我还尝试使用 OneDrive's API Console 重现它,它显示了确切的行为。复制空文件夹时我没有任何问题。此问题仅发生在文件上。有谁知道为什么?我应该做些什么来开始那个异步作业?
好像没有人知道这个问题。现在,我必须使用旧的 OneDrive API(以前的 SkyDrive API)来进行复制操作,就像这个例子:
COPY https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!126
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"destination": "folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!114"
}
档案后的东西。和文件夹。是用户 ID 后跟项目 ID(file id
表示项目或 folder id
表示目的地)。请注意,这仅适用于文件。不能复制文件夹。如果成功,它将 return 状态码 Created
.
哦,还有......为了使用这个API,我们需要在验证我们的应用程序时在范围内有wl.skydrive_update
。
我不会将此答案标记为已接受的答案,因为这只是此问题的解决方法。它并没有解决真正的问题。
4 月 12 日更新: 行。根据 this bug tracking,这个 API 现在应该可以工作了(引用的评论是在 4 月 10 日发布的。所以我会把这个问题标记为已回答。