Как получить идентификатор файла, чтобы я мог выполнить загрузку файла из Google Drive API на Android?

Я работаю над проектом Android и пытаюсь использовать API Google Drive, и у меня большая его часть работает, но у меня возникла проблема с выполнением загрузки.

Я нигде не могу найти, как получить идентификатор файла, чтобы я мог выполнить загрузку. Чтобы проверить, я извлек все файлы в моей учетной записи диска и добавил их в массив списка, а затем получил идентификатор для первого файла в списке.

Затем я скопировал идентификатор файла в команду для загрузки файла, и это сработало успешно, но я понятия не имею, как получить идентификатор файла конкретного файла, который я хочу загрузить.

Ниже приведен код, который я использую для загрузки файла.

private void downloadFile()
{
    Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
            try 
            {
                com.google.api.services.drive.model.File file = service.files().get("0B-Iak7O9SfIpYk9zTjZvY2xreVU").execute();
                //FileList file = service.files().list().execute();
                //List<com.google.api.services.drive.model.File> fileList = file.getItems();
                //com.google.api.services.drive.model.File fileItem = fileList.get(0);
                //Log.d("FileID" , fileItem.getId());
                //Log.d("Count", "Retreived file list");
                if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0)
                {
                    HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl())).execute();
                    InputStream inputStream = resp.getContent();
                    writeToFile(inputStream);
                }
            } 
            catch (IOException e)
            {
                Log.e("WriteToFile", e.toString());
                e.printStackTrace();
            }
        }
    });
    thread.start();
}

0B-Iak7O9SfIpYk9zTjZvY2xreVU - это идентификатор файла, который я загружаю, который я извлек, когда 0B-Iak7O9SfIpYk9zTjZvY2xreVU список и выбрал первый файл, но как я могу сказать, что хочу загрузить File_1 и получить его идентификатор, чтобы затем передать его службе. get(). выполнить функцию.

По сути, моя конечная цель - это приложение, я загружаю файл XML на Google Drive, а затем загружаю файл. Это будет только один файл и всегда будет иметь одинаковое имя. Собираюсь ли я сделать это сразу или есть лучший способ добиться того, что я пытаюсь сделать?

Ответ 1

Ну, первый вариант, о котором я мог подумать, - отправить запрос list с параметры поиска для вашего файла, например title="File_1.xml" and fileExtension="xml". Он либо вернет пустой список файлов (не соответствует критериям serach), либо вернет список, по крайней мере, с одним файлом. Если это только один - это легко. Но если их больше - вам придется выбрать один из них на основе некоторых других полей. Помните, что в gdrive у вас может быть более одного файла с тем же именем. Таким образом, чем больше параметров поиска вы предоставляете, тем лучше.

Ответ 2

На мой взгляд, самый простой и быстрый способ получить идентификатор файла на Google Диске - использовать Google Drive в Интернете. Щелкните правой кнопкой мыши имя файла и выберите " Получить доступную ссылку". Последняя часть ссылки - это идентификатор файла. Затем вы можете отменить обмен.

Ответ 3

Один из способов - связать уникальные свойства с вашим файлом во время создания.

properties = "{ \
    key='somekey' and \
    value='somevalue'
}"

затем создайте запрос.

query = "title = " + "\'" + title + "\'" + \
        AND + "mimeType = " + "\'" + mimeType + "\'" + \
        AND + "trashed = false" + \
        AND + "properties has " + properties

Все свойства файла (название и т.д.), которые уже известны вам, можно найти здесь +.

Ответ 4

Этот script регистрирует все имена файлов и идентификаторы в диске:

// Log the name and id of every file in the user Drive
function listFiles() {
  var files = DriveApp.getFiles();
  while ( files.hasNext() ) {
    var file = files.next();
    Logger.log( file.getName() + ' ' + file.getId() );
  }
}  

Кроме того, страница Files: list" имеет форму в конце, в которой перечислены метаданные всех файлов на диске, что можно использовать, если вам нужно, но несколько идентификаторов.

Ответ 5

Нажмите правой кнопкой мыши на файл на вашем Google Диске. Выберите опцию, чтобы получить ссылку, которой можно поделиться из меню. Вы увидите идентификатор файла сейчас. Не забудьте отменить долю.

Ответ 6

Идеальная идея Stan0 не является хорошей идеей. Могут быть несколько файлов с тем же именем. Очень склонная к ошибкам реализация. Вторая идея Stan0 - правильный путь.

Когда вы сначала загружаете файл в хранилище дисков Google, его идентификатор (в SharedPreferences, вероятно, самый простой) для последующего использования

т.

file= mDrive.files().insert(body).execute();      //initial insert of file to google drive

whereverYouWantToStoreIt= file.getId(); //now you have the guaranteed unique id 
                                        //of the file just inserted. Store it and use it 
                                        //whenever you need to fetch this file

Ответ 7

Если вы знаете имя файла, и если вы всегда хотите загрузить этот конкретный файл, вы можете легко получить идентификатор и другие атрибуты для нужного файла: https://developers.google.com/drive/v2/reference/files/list (внизу вы найдете способ запуска запросов). В поле q введите title= 'your_file_name' и запустите его. Вы должны увидеть, что некоторые результаты появляются прямо внизу и внутри него должно быть поле "id". Это идентификатор, который вы ищете.

Вы также можете играть с дополнительными параметрами: https://developers.google.com/drive/search-parameters