Загрузить файл в общую папку на Google Диске с помощью Java с Google Drive API V3?

Мне нужно загрузить файлы в общую папку на Google Диске (которая не принадлежит мне, а предоставлена ​​мне) с помощью Java. Используя Drive API s, мы можем загружать файлы на диск, принадлежащий пользователю. , Но не нашли никакого решения, позволяющего загружать в общую папку. Сценарий использования - это что-то вроде того, что разным пользователям приложения нужно загружать файлы в общую папку на Google Диске. Есть еще несколько вопросов (например, this) задавали вопросы по этой теме, но ни у одного из них нет правильного ответа. Пожалуйста, помогите, если это возможно, или сообщите, что это невозможно сделать программно.


person Subhankar Mukherjee    schedule 09.04.2020    source источник
comment
Согласно документации, вам необходимо добавить параметр запроса supportsAllDrives=true, чтобы он был возможность доступа, загрузки, внесения в список или создания на общем диске с помощью Drive API. Возможно, это решение Stack Overflow проясняет это лучше. Сообщите мне, сработало ли это или вам нужна дополнительная информация.   -  person Mateo Randwolf    schedule 10.04.2020
comment
@MateoRandwolf Я дам тебе знать. Благодаря тонну   -  person Subhankar Mukherjee    schedule 10.04.2020
comment
@MateoRandwolf, это сработало, фактически согласно этой документации, они собираются отказаться от этого параметра и, возможно, по этой причине они поддерживают его по умолчанию в своих API-интерфейсах Java. Так что на самом деле я ничего не должен был делать. :)   -  person Subhankar Mukherjee    schedule 11.04.2020


Ответы (1)


Я нашел решение с помощью другого комментатора @MateoRandwolf, поэтому отправляю ответ. Надеюсь, это поможет..

Согласно этой документации, параметр supportsAllDrives=true сообщает Google Диску, что ваше приложение предназначен для работы с файлами на общих дисках. Но также упоминается, что параметр supportsAllDrives будет действителен до 1 июня 2020 г. После 1 июня 2020 г. предполагается, что все приложения будут поддерживать общие диски. Итак, я попробовал использовать Java API Google Диска V3 и обнаружил, что общие диски в настоящее время поддерживаются по умолчанию в execute методе Drive.Files.Create класса V3 API. Прикрепите образец кода для справки. Этот метод uploadFile загружает файл в папку диска Google с помощью прямой загрузки и возвращает загруженный fileId.

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();
}
person Subhankar Mukherjee    schedule 11.04.2020