我正在尝试使用Java应用程序将文件上传到OneDrive,并且我对这个过程有点挣扎 . 我认为我的主要问题是我没有像微软定义的那样获得驱动和文件夹概念 . 所以我无法看到要上传到的URL .
现在,只要将文件上传到我自己的OneDrive文件夹,每当我登录公司的“Sharepoint”网站时,我都会欣喜若狂 . 所以这不是个人OneDrive上传 . 最终,虽然我需要能够构建一个URL,指向要求存放文件的任何文件夹 .
搜索WEB(和Stackoverflow)我发现人们指定了两种不同类型的URL来上传文件 .
-
https://apis.live.net/v5.0/me/skydrive/files?access_token=“sAccessToken - 第一个似乎是一个MS URL,它以某种方式应该弄清楚我的文件夹是什么 .
-
https://mycompanyname.sharepoint.com/me/drive?access_token=“sAccessToken - 这个特定于我的公司 . 在我的脑海中指向我的默认目录 . 但是对于我的生活,我无法让它工作 . 即使在Chrome Postman中,更不用说在我的Java应用程序中 .
我一直得到401或404错误 . 现在401是授权错误,所以我认为这是一个URL问题 . 好吧,因为我创建了应用程序并自己赋予了ReadWrite权限 . 我使用此应用程序中的秘密来获取可行的AccessKey . 所以我的猜测是我访问了一个不正确的文件夹,即不是我的,而是其他人的,因此我收到了401消息 .
我没有提出Java代码,因为我甚至无法在Postman中使用它 . 所以,如果我遗漏了任何东西,请告诉我 .
谢谢大家提前
1 回答
根据One Drive API documentation,可以使用以下3种方法将文件上传到One Drive个人:
我们只需要将文件名作为路径参数传递给url,将实际文件作为二进制附件传递给body .
你完成了简单的上传 .
Note: 如果要将文件上载到根目录以外的目录,则可以在URL中提及特定目录的ID而不是"root" .
这对我不起作用,因为基础64编码的有效负载在没有在一个驱动器服务器上解码的情况下被上载,上载的文件是不可预览的 . 好像一个驱动器忽略了Content-Encoding-Scheme标头(可能是一个bug),或者根本不支持 . :(
如果你能解决它,请告诉我 .
有效载荷中的内容正在被正确地上传,但由于它忽略了媒体文件的内容编码方案,内容被上传为基本64编码内容,这在一个驱动器中是不可预览的 .
请按照以下链接了解有关此问题的更多信息:
Stackoverflow
Microsoft forum
并将文件附加为二进制附件 .
这完全适用于POSTMAN客户端 .
如果您希望上传相同的java代码,可以使用以下示例代码:Sample upload application