2

我正在尝试从我的 Java 应用程序将文件上传到 OneDrive,但我不了解流程,也没有看到 SKD 中用于文件上传的任何文档或方法。

我发现的唯一流程是:

driveClient.me().drive().root().createUploadSession(uploadProperties).buildRequest().post()

但这导致NPE: source.

如何将内容设置为 InputStream ?

4

1 回答 1

0

您必须使用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。

我希望这可以帮助你。

于 2020-06-12T11:22:58.983 回答