Мне нужно загрузить файлы в общую папку на Google Диске (которая не принадлежит мне, а предоставлена мне) с помощью Java. Используя Drive API s, мы можем загружать файлы на диск, принадлежащий пользователю. , Но не нашли никакого решения, позволяющего загружать в общую папку. Сценарий использования - это что-то вроде того, что разным пользователям приложения нужно загружать файлы в общую папку на Google Диске. Есть еще несколько вопросов (например, this) задавали вопросы по этой теме, но ни у одного из них нет правильного ответа. Пожалуйста, помогите, если это возможно, или сообщите, что это невозможно сделать программно.
Загрузить файл в общую папку на Google Диске с помощью Java с Google Drive API V3?
Ответы (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();
}
supportsAllDrives=true
, чтобы он был возможность доступа, загрузки, внесения в список или создания на общем диске с помощью Drive API. Возможно, это решение Stack Overflow проясняет это лучше. Сообщите мне, сработало ли это или вам нужна дополнительная информация. - person Mateo Randwolf   schedule 10.04.2020