无法使用Java SDK将文件上载到OneDrive

无法使用Java SDK将文件上载到OneDrive,java,microsoft-graph-api,microsoft-graph-sdks,microsoft-graph-files,Java,Microsoft Graph Api,Microsoft Graph Sdks,Microsoft Graph Files,我无法使用MS Graph Java SDK将文件上载到OneDrive,也找不到任何基于Java的示例 我在这里发现了一个类似的(但尚未回答的)问题: 然而,我已经设法拼凑出了上面提出的问题中显示的更多代码(基于一个基于.NET的示例),但仍然没有成功 FileSystemInfo fileSystemInfo = new FileSystemInfo(); fileSystemInfo.createdDateTime = new GregorianCalendar(); fileSystem

我无法使用MS Graph Java SDK将文件上载到OneDrive,也找不到任何基于Java的示例

我在这里发现了一个类似的(但尚未回答的)问题:

然而,我已经设法拼凑出了上面提出的问题中显示的更多代码(基于一个基于.NET的示例),但仍然没有成功

FileSystemInfo fileSystemInfo = new FileSystemInfo();
fileSystemInfo.createdDateTime = new GregorianCalendar();
fileSystemInfo.lastModifiedDateTime = new GregorianCalendar();

DriveItemUploadableProperties properties = new DriveItemUploadableProperties();
properties.name = "test.jpeg";
properties.description = "TEST_DESCRIPTION";
properties.fileSystemInfo = fileSystemInfo;

IDriveItemCreateUploadSessionRequest request = this.graphServiceClient
        .me()
        .drive()
        .root()
        .createUploadSession(properties)
        .buildRequest();

UploadSession session = request.post();

if(Objects.nonNull(session)) {
    int maxSizeChunk = (320 * 1024) * 4;
    String macOsPath = "[ADD YOUR VALID FILE PATH]";
    File file = new File(macOsPath);
    FileInputStream inputStream = new FileInputStream(file);

    ChunkedUploadProvider<File> uploadProvider = 
        new ChunkedUploadProvider(session, this.graphServiceClient, 
            inputStream, maxSizeChunk, File.class);

    IProgressCallback<File> callback = new IProgressCallback<File>() {        
        @Override
        public void progress(long l, long l1) {
            log.info("making progress: " + l + ", " + l1);
        }

        @Override
        public void success(File file) {
            log.info("Success! " + file.getName());
        }

        @Override
        public void failure(ClientException e) {
            log.info("Failure! " + e.getMessage());
        }
    };
    uploadProvider.upload(callback, 0);
}
将返回以下错误,而不是返回上载会话:

{
  "error": {
    "code": "invalidRequest",
    "message": "The request is malformed or incorrect.",
    "innerError": {
      "request-id": "b9d4026b-0d8f-44b4-9e9e-8d78a0ea5ea3",
      "date": "2019-05-30T16:20:11"
    }
  }
}

我不完全理解需要
DriveItemUploadableProperties
的原因,但您不应该设置它的任何属性

请尝试使用此选项:

UploadSession session = this.graphServiceClient
    .me()
    .drive()
    .root
    .itemWithPath("_hamilton.jpg")
    .createUploadSession(new DriveItemUploadableProperties())
    .buildRequest()
    .post();

我个人发现最有用的例子是SDK本身中的单元测试。在这种情况下,您可以在中找到它。

我不完全理解需要
DriveItemUploadableProperties
的原因,但您不应该设置它的任何属性

请尝试使用此选项:

UploadSession session = this.graphServiceClient
    .me()
    .drive()
    .root
    .itemWithPath("_hamilton.jpg")
    .createUploadSession(new DriveItemUploadableProperties())
    .buildRequest()
    .post();

我个人发现最有用的例子是SDK本身中的单元测试。在这种情况下,您可以在中找到它。

搞定它!非常感谢你的帮助。下次我被难倒的时候,我一定会好好看看考试的。再次感谢!请注意,OneDriveTest.java自“2018-04-25 11:05:32”以来一直处于@Ignored状态,我也无法使用它。仍在寻找更好/有效的解决方案。成功了!非常感谢你的帮助。下次我被难倒的时候,我一定会好好看看考试的。再次感谢!请注意,OneDriveTest.java自“2018-04-25 11:05:32”以来一直处于@Ignored状态,我也无法使用它。仍在寻找更好/有效的解决方案。