我已经在这个问题上磕磕绊绊了一段时间。我试图将位于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
标题处关注链接时,我获得了异步作业状态:
{
"operation": "ItemCopy",
"percentageComplete": 0,
"status": "notStarted",
"statusDescription": "Completed 0/0 files; 0/0 bytes"
}
问题是,无论我等待多少次并拨打此链接,它都会给出准确的回复,status
notStarted
为{{1}}。我还尝试使用OneDrive's API Console重现这一点,并显示确切的行为。复制空文件夹时我没有任何问题。此问题仅发生在文件上。有谁知道为什么?我有什么办法可以开始那个异步工作吗?
答案 0 :(得分:0)
似乎没有人知道这个问题。目前,我必须使用旧的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
)。请注意,这仅适用于文件。我们无法复制文件夹。如果成功,它将返回状态代码Created
。
哦,并且......为了使用此API,我们需要在验证我们的应用时在范围内wl.skydrive_update
。
我不会将此答案标记为已接受的答案,因为这只是此问题的解决方法。它并没有解决真正的问题。
每年4月12日更新: 好。根据{{3}},此API现在应该正常工作(引用的评论将于4月10日发布。所以我将此问题标记为已回答。