使用 Java 和 Google Drive API V3 将文件上传到共享 google 驱动器位置?

Upload a file to shared google drive location using Java with Google Drive API V3?

我需要使用 Java 将文件上传到共享的 Google 驱动器位置(该位置不归我所有,而是与我共享)。使用 Drive APIs, We can upload files to a drive location which the user owns, But have not found any solution to allow upload to a shared location. The use case is something like different users of an application need to upload files to a shared Google Drive location. There are few other questions( i.e this) 询问此主题,但其中 none 有正确答案。如果可能请提供帮助,或者请告知无法以编程方式实现此目的。

我在评论员@MateoRandwolf 的帮助下找到了解决方案,因此发布了答案。希望对你有帮助..

根据此 documentationsupportsAllDrives=true 参数通知 Google Drive 您的应用程序旨在处理共享驱动器上的文件。但也提到supportsAllDrives参数有效期到2020年6月1日。2020年6月1日之后,所有应用都将假定支持共享驱动器。所以我用Google Drive V3 Java API试了一下,发现Drive.Files.Create[=23]的execute方法目前默认支持共享驱动=] V3 APIs。附上示例代码片段供其他人参考。此方法 uploadFile 使用直接上传和 returns 上传的文件 ID 将文件上传到 Google 驱动器文件夹。

public static String uploadFile(Drive drive, String folderId) throws IOException {

    /*
    * drive: an instance of com.google.api.services.drive.Drive class
    * folderId: The id of the folder where you want to upload the file, It can be
    * located in 'My Drive' section or 'Shared with me' shared drive with proper 
    * permissions.
    * */

    File fileMetadata = new File();
    fileMetadata.setName("photo.jpg");
    fileMetadata.setParents(Collections.singletonList(folderId));
    java.io.File filePath = new java.io.File("files/photo.jpg");
    FileContent mediaContent = new FileContent("image/jpeg", filePath);

    File file = drive.files().create(fileMetadata, mediaContent)
                                    .setFields("id")
                                    .execute();
    System.out.println("File ID: " + file.getId());
    return file.getId();
}