我正在尝试从Java应用程序将文件上传到OneDrive,但是我不理解流程,也没有看到SKD中用于文件上传的任何文档或方法。
我发现的唯一流程是:
driveClient.me().drive().root().createUploadSession(uploadProperties).buildRequest().post()
但是这导致NPE: source
。
我如何将内容设置为InputStream?
您必须使用ChunkedUploadProvider。这是用于上传大文件的官方示例代码:https://docs.microsoft.com/en-us/graph/sdks/large-file-upload?tabs=java
对我而言,此示例适用于大小小于1.9921875 GB的文件。不幸的是,较大的文件失败,并显示“上传会话失败太多次”错误。解决方法是使用File.length()方法获取文件大小:
long streamSize = file.length();
代替
long streamSize = (long)fileStream.available();
如示例中所示。
这是因为fileStream.available()以整数形式返回可用字节,并且整数的最大值(以字节为单位)为〜2GB。
希望对您有帮助。